Script de validação não funciona completamente no JSP
7 respostas
M
Marcos_rhs
Pessoal, tenho um javascript que faz as validações dos campos e dos checkbox do meu jsp, só que a parte dos checkboxes não está funcionando, o sistema simplesmente ignora essa parte.
functionvalida_agenda(agenda){varlastRow=qtdeCampos;vari;if((agenda.data_cad.value=="")||(agenda.tecnologia.value=="")){window.alert('Você precisa informar os dados para cadastro')returnfalse;}for(i=1;i<=lastRow;i++){varassunto=document.getElementById('assunto'+i);if(assunto.value.length<=0){alert('O Campo Assunto '+i+' esta vazia');returnfalse;}vartipo=document.getElementById('tipo'+i);if(tipo.value.length<=0){alert('O Campo Tipo '+i+' esta vazia');returnfalse;}varapr=document.getElementById('apr'+i);if(apr.value.length<=0){alert('O campo Apresentador '+i+' esta vazia');returnfalse;}varhorario=document.getElementById('horario'+i);if(horario.value.length<=0){alert('O campo Horário '+i+' esta vazia');returnfalse;}varduracao=document.getElementById('duracao'+i);if(duracao.value.length<=0){alert('O campo Duração '+i+' esta vazia');returnfalse;}}if(agenda.comite.checked==false&&agenda.apr.checked==false){if(confirm("You don't select the Committee or Presenters options, would you like to communicate them later?"))returntrue;}returnfalse;}
Essa parte o sistema não reconhece, fiz alguma coisa de errado?
if(agenda.comite.checked==false&&agenda.apr.checked==false){if(confirm("You don't select the Committee or Presenters options, would you like to communicate them later?"))returntrue; }returnfalse;
}
2 coisas:
colocou o alert que falei? o que aparece?
meu nome é Felipe e não Fernando!
M
Marcos_rhs
OOOppss!! Felipe me desculpe por trocar o seu nome… Eu estava conversando com um colega que se chama Fernando e acabei escrevendo o nome dele…
Coloquei o alert mas nem chegou a acionar, foi ignorado:
functionvalida_agenda(agenda){varlastRow=qtdeCampos;vari;if((agenda.data_cad.value=="")||(agenda.tecnologia.value=="")){window.alert('Você precisa informar os dados para cadastro')returnfalse;}for(i=1;i<=lastRow;i++){varassunto=document.getElementById('assunto'+i);if(assunto.value.length<=0){alert('O Campo Assunto '+i+' esta vazia');returnfalse;}vartipo=document.getElementById('tipo'+i);if(tipo.value.length<=0){alert('O Campo Tipo '+i+' esta vazia');returnfalse;}varapr=document.getElementById('apr'+i);if(apr.value.length<=0){alert('O campo Apresentador '+i+' esta vazia');returnfalse;}varhorario=document.getElementById('horario'+i);if(horario.value.length<=0){alert('O campo Horário '+i+' esta vazia');returnfalse;}varduracao=document.getElementById('duracao'+i);if(duracao.value.length<=0){alert('O campo Duração '+i+' esta vazia');returnfalse;}}alert(agenda.comite.checked);if(agenda.comite.checked!=true&&agenda.apr.checked!=true){if(confirm("You don't select the Committee or Presenters options, would you like to communicate them later?"))returntrue;}returnfalse;}
alves.Felipe
cara.. seguinte...
eu montei um html e peguei a parte dos checkbox e e validei na sua função... e funcionou...
então.. acho que o erro esta antes de chegar nessa parte...
remove o código js e vai colocando if por if.. ateh descobrir onde esta o erro...coloca uns alert para ver o valores...
outra coisa.. não esta legal esses scriptless no seu código neh?! acessando o banco e tudo... sugiro dar uma revisada nisso...
M
Marcos_rhs
Felipe, fiz os testes e o problema aparentemente está após executar o “FOR”, pois até aí tudo funcionando. Se eu pegar a parte de validação dos checkboxes e colocar no início antes do “FOR” aí funciona. Parece que executa o “FOR” e ignora o resto… Fiz o teste também colocando a validação dentro do “FOR” e funcionou, mas o problema é que vai ficar dentro do laço dos campos que contém id’s e vai se repetir o confirm a cada volta.
Não sei mais o que fazer, alguma outra dica?
functionvalida_agenda(agenda){varlastRow=qtdeCampos;vari;if((agenda.data_cad.value=="")||(agenda.tecnologia.value=="")){window.alert('Você precisa informar os dados para cadastro')returnfalse;}for(i=1;i<=lastRow;i++){varassunto=document.getElementById('assunto'+i);if(assunto.value.length<=0){alert('O Campo Assunto '+i+' esta vazia');returnfalse;}vartipo=document.getElementById('tipo'+i);if(tipo.value.length<=0){alert('O Campo Tipo '+i+' esta vazia');returnfalse;}varapr=document.getElementById('apr'+i);if(apr.value.length<=0){alert('O campo Apresentador '+i+' esta vazia');returnfalse;}varhorario=document.getElementById('horario'+i);if(horario.value.length<=0){alert('O campo Horário '+i+' esta vazia');returnfalse;}varduracao=document.getElementById('duracao'+i);if(duracao.value.length<=0){alert('O campo Duração '+i+' esta vazia');returnfalse;}}
Até aqui funciona o problema está nesta parte.
if(agenda.comite.checked==false&&agenda.apr.checked==false){if(confirm("You don't select the Committee or Presenters options, would you like to communicate them later?"))returntrue;
}returnfalse;
}
vc colocou name = assunto1, mas na parte que vc add as linhas esta name='assunto"+qtdeCampos+ , então acho que deve estar dando um conflito.. manja..
tipo no seu for, vc faz document.getElementById, acho q por isso q rola o conflito...
# var assunto = document.getElementById('assunto' + i); # if ( assunto.value.length <= 0)
talvez se vc fazer document.getElementsByTagName("assunto1") ele retornará uma lista de elementos( acho q 2 elementos)... entende...