..:: MX Studio Fóruns ::..: Validacao de combobox dinamicos - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Validacao de combobox dinamicos

#1 User is offline   alexmaia 

  • Group: Membros
  • Posts: 246
  • Joined: 04-February 05

Posted 09 May 2006 - 03:33 PM

Oi gente.

Tenho uma aplicacao pela qual o usuario pode inserir registros no BD. A medida que ele vai inserindo, vou listando os registros inseridos. As informacoes que sao listadas vem junto de um combobox, no qual o usuario deveria selecionar um valor (pq o default no bd é nulo) para cada registro. Ao final dessa pagina tem um submit que atualiza no bd todos os combobox.

O problema é que nem sempre ele seleciona um valor nesse combobox. Nesses casos, quando a aplicacao vai atualizar o registro em questao pelo valor do combobox, gera um erro.

Solucao1-> Colocar o campo do combobox com um valor default que nao seja null. Mas nao queria fazer assim. Queria fazer a validacao no codigo.

Solucao2-> Loop para percorrer todos os combobox da query, averiguando se eles tem um valor selecionado. Mas nao to conseguindo fazer isso.

ColdFusion

<CFSET total = ListLen(#Form.ID#)>
<CFLOOP INDEX=Y FROM=1 TO=#total#>
<cfif #ListGetAt(Form.Quantidade, Y)# eq ''>
<script>
alert('Por favor, insira uma quantidade.');
history.go(-1);
</script>
</cfif>
</cfloop>


Monto uma lista com o numero de registros contidos na query. Feito isso, tento ver se o combobox do registro Y esta ou nao com uma valor selecionado.

Alguem pode dar uma opiniao sobre esse meu codigo ou me dar alguma sugestao ? smile.gif

Valeu
0

#2 User is offline   pcsilva 

  • Group: Moderadores
  • Posts: 1940
  • Joined: 23-January 05

Posted 09 May 2006 - 08:25 PM

Se o combobox não for selecionado, a variavel que representa este combobox será definida, mas sem valor.
Para que sua lista exista, esta situação não pode existir.
Certo?
então teste primeiro o conteúdo da vairavel.
Se você tem uma lista com multiplas seleções acredito ser desnecessária uma opção sem valor.
E se você possuir uma lista com multiplas seleções, e sem opções sem valor, voce não precisará do loop dentro do if, exceto no momento da inserção de dados no banco.
ColdFusion

<cfif Len(Trim(Form.ID))>
<CFLOOP INDEX=Y FROM=1 TO=#ListLen(Form.ID)#>
<!--- --->
</cfloop>
<cfelse>
<script>
alert('Por favor, insira uma quantidade.');
history.go(-1);
</script>
</cfif>

0

#3 User is offline   ianrapha 

  • Group: Membros
  • Posts: 318
  • Joined: 26-February 04

Posted 09 May 2006 - 10:03 PM

Fala alex fmz?

Então, vc pode fazer uma validação em JS para checar esta seleção e colocar no onSubmit do form ou cfform pra chamar esta função.
Dessa maneira você faz a validação do lado do cliente, não precisa submitar os dados para o server e fazer a verificação.

Exemplo
ColdFusion
<cfform action="" onsubmit="return validaCampos(this)">


Aí qdo nenhum tiver checado você dah return false no js.

Agora não to com tempo de deixar um exemplo. Mas amanhã c conseguir eu deixo algo.

Espero ter ajudado

Ian Raphael
0

#4 User is offline   alexmaia 

  • Group: Membros
  • Posts: 246
  • Joined: 04-February 05

Posted 12 May 2006 - 03:18 PM

Fala ianrapha.
Os meus combobox sao gerados dinamicamente pela aplciacao. Acho que neste caso, javascript nao funciona... Funciona ?
Pelo menos esse codigo aqui nao funcionou:

JavaScript
<script language="JavaScript">
function check(){
if (document.form1.Quantidade.value == 0) {
window.alert("O campo 'Quantidade' não foi preenchido.");
return false;
}
}
</script>




Fala pcsilva.
Da erro brother.

CODE
#ListGetAt(Form.Quantidade, Y)# eq ''


Vou postar um print screen da pagina para ver se voces conseguem me ajudar.

user posted image
Clique na imagem para ampliá-la

Valeu
0

#5 User is offline   pcsilva 

  • Group: Moderadores
  • Posts: 1940
  • Joined: 23-January 05

Posted 12 May 2006 - 03:25 PM

Você pode fazer a validação como o ian falou, o cfform possui uma validação js bem legal, mas seus inputs devem ser cfinputs e seus selects devem ser cfselects.

Qual a mensagem de erro.
Manda também o dump da variavel FORM.ID no momento do erro, basta colocar o código que acha que contem erro dentro de um cftry
0

#6 User is offline   alexmaia 

  • Group: Membros
  • Posts: 246
  • Joined: 04-February 05

Posted 12 May 2006 - 04:30 PM

CFFORM implica com campos de mesmo nome ?

CODE
Error Diagnostic Information
CFSelect
Duplicate name conflict in CFForm section.
The error occurred while processing an element with a general identifier of (CFSELECT), occupying document position (209:43) to (209:123).

Date/Time: 05/12/06 15:06:54
Browser: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Remote Address: 200.157.145.226
HTTP Referrer: http://www.site.com.br/
Query String: CFID=18404342&CFTOKEN=59115485


Os campos sao listados numa query...nao tem como alterar o nome. A menos que eu crie uma variavel e incrementasse o valor dela (Quantidade1, Quantidade2, Quantidade3, etc) Mas isso ia complicar bastante a minha vida quando fosse fazer o update..

-------------------

Pedro, no post2 voce deu a sugestao de um codigo.. Bastaria colocar aquela verificacao no meu codigo ?

-------------------

Quanto a mensagem erro:
se eu colocar o loop tentando percorrer a lista de combobox, verificando se tem algum dado neles, me retorna o seguinte erro:

CODE
Error Diagnostic Information

An error occurred while evaluating the expression:
#ListGetAt(Form.Quantidade, Y)# eq ''

Error near line 5, column 38.
--------------------------------------------------------------------------------

In function ListGetAt(list, index [, delimiters]) the value of index, which is 3, is not a valid index for the list given as a the first argument (this list has 2 elements). Valid indexes are in the range 1 through the number of elements in the list



Valeu
0

#7 User is offline   pcsilva 

  • Group: Moderadores
  • Posts: 1940
  • Joined: 23-January 05

Posted 12 May 2006 - 05:21 PM

QUOTE(alexmaia @ 12/5/2006 16:05:20)
CFFORM implica com campos de mesmo nome ?
View Post


Sim, ele nao permiti duplicidade.


QUOTE(alexmaia @ 12/5/2006 16:05:20)

Pedro, no post2 voce deu a sugestao de um codigo.. Bastaria colocar aquela verificacao no meu codigo ?

View Post


sim, basta colocar aquele if antes


veja que o o loop esta percorrendo a lista toda e ultrapassando seu tamanho, onde a mensagem diz 'which is 3' e onde ela diz "this list has 2 elements"

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic


Similar Topics Collapse


Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)