Script de validação não funciona completamente no JSP

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.

function valida_agenda(agenda) 
{ 
var lastRow = qtdeCampos; 
var i; 
if ((agenda.data_cad.value=="")||(agenda.tecnologia.value=="")) 
{ 
window.alert ('Você precisa informar os dados para cadastro') 
return false; 
} 
for (i=1; i<=lastRow; i++) { 
 
var assunto = document.getElementById('assunto' + i); 
if ( assunto.value.length <= 0) { 
alert('O Campo Assunto ' + i + ' esta vazia'); 
return false; 
} 
 
var tipo = document.getElementById('tipo' + i); 
if ( tipo.value.length <= 0) { 
alert('O Campo Tipo ' + i + ' esta vazia'); 
return false; 
} 
 
var apr = document.getElementById('apr' + i); 
if (apr.value.length <= 0) { 
alert('O campo Apresentador ' + i + ' esta vazia'); 
return false; 
} 
 
var horario = document.getElementById('horario' + i); 
if (horario.value.length <= 0) { 
alert('O campo Horário ' + i + ' esta vazia'); 
return false; 
} 
 
var duracao = document.getElementById('duracao' + i); 
if (duracao.value.length <= 0) { 
alert('O campo Duração ' + i + ' esta vazia'); 
return false; 
} 
} 
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?")) 
return true; 
} 
return false; 
}

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?")) 
                return true; 
                } 
                return false; 
}

Alguém pode me ajudar com isso?

Marcos

Posta o seu jsp para ficar melhor…
e também… coloca um alert(agenda.comite.checked) só para ver o que esta retornando…

Blz Fernando, obrigado por responder.

segue o JSP.

<%@ page contentType="text/html; charset=iso-8859-1" session="true" import="util.*" import="java.sql.*" import="java.util.Date"
	import="java.util.*" import="java.text.SimpleDateFormat" errorPage=""%>
<%
//ABRE CONEXÃO COM O BANCO
ConexaoUtil c = new ConexaoUtil();

ResultSet rs_resp = null;
%>		
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en">
<head>
    <!--
    Created by Artisteer v2.4.0.25435
    Base template (without user's data) checked by http://validator.w3.org : "This page is valid XHTML 1.0 Transitional"
    -->
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
    <meta http-equiv="Cache-Control" content="no-cache, no-store" />
    <meta http-equiv="Pragma" content="no-cache, no-store" />
    <meta http-equiv="expires" content="Mon, 06 Jan 1990 00:00:01 GMT" />
    <title>Portal GGP</title>

   <script type="text/javascript" src="../js/validacoes.js"></script>
   <script type="text/javascript" src="../js/autocomplete.js"></script>
   <script type="text/javascript" src="../jscalendar-1.0/calendar.js"></script>
   <script type="text/javascript" src="../jscalendar-1.0/calendar-setup.js"></script>
   <script type="text/javascript" src="../jscalendar-1.0/lang/calendar-br.js"></script>
   <link rel="stylesheet" type="text/css" media="screen,projection" href="../jscalendar-1.0/calendar-brown.css" />
   <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" />
   <!--[if IE 6]><link rel="stylesheet" href="../css/style.ie6.css" type="text/css" media="screen" /><![endif]-->
   <!--[if IE 7]><link rel="stylesheet" href="../css/style.ie7.css" type="text/css" media="screen" /><![endif]--> 
    
    <script language = "javascript">  
var qtdeCampos = 2;

function addCampos() {
	if (qtdeCampos <= 40) {
var objPai = document.getElementById("campoPai");
//Criando o elemento DIV;
var objFilho = document.createElement("div");
//Definindo atributos ao objFilho:
objFilho.setAttribute("id","filho"+qtdeCampos);
//alert(qtdeCampos);
//Inserindo o elemento no pai:
objPai.appendChild(objFilho);
//Escrevendo algo no filho recém-criado:
document.getElementById("filho"+qtdeCampos).innerHTML = "<input type='hidden' id='idAge"+qtdeCampos+"' name='idAge' value='"+qtdeCampos+"'>"+
				 "<table id='idTblAge"+qtdeCampos+"' name='idTblAge"+qtdeCampos+"' border='0' cellspacing='0' cellpadding='0'>"+
					"<tr>"+
				      "<td width='285px'>"+
				          "<a href='javascript:;'><img src='../images/eliminar.gif' border='0' onclick='removerCampo("+qtdeCampos+")' value='Remove'></a>"+
                  		  "<input type='text' name='assunto"+qtdeCampos+"' id='assunto"+qtdeCampos+"' size='37'onkeyup='combo_assunto(this.value,"+qtdeCampos+");' onkeydown='processReqChange_combo_assunto("+qtdeCampos+");' onclick='hide_ass("+qtdeCampos+");' /><br>"+
				          "<div id='combo_assuntos"+qtdeCampos+"' style='display:none;' class='autocompleteAgeForm'></div>"+
				      "</td>"+
				      "<td width='105px'>"+
				          "<select name='tipo"+qtdeCampos+"' id='tipo"+qtdeCampos+"' >"+
				          "<option></option>"+
				          "<option value='Status'>Status</option>"+
				          "<option value='IST'>IST</option>"+
				          "<option value='CET'>CET</option>"+
				          "<option value='BET'>BET</option>"+
				          "<option value='PRM'>PRM</option>"+
				          "<option value='PAT'>PAT</option>"+
				          "</select>"+
				      "</td>"+
				      "<th width='305px'>"+
              		  "<input type='text' id='apr"+qtdeCampos+"'name='apr"+qtdeCampos+"' size='47' onkeyup='combo_apres(this.value,"+qtdeCampos+");' onkeydown='processReqChange_combo_apres("+qtdeCampos+");' onclick='hide_users("+qtdeCampos+");'/><br>"+
			          "<div id='combo_apres"+qtdeCampos+"' style='display:none;' class='autocompleteAgeForm'></div>"+
			          "</th>"+
				      "<td width='83px'>"+
				          "<input name='hora"+qtdeCampos+"' type='text' id='hora"+qtdeCampos+"'  size='2' maxlength='2' />:<input name='min"+qtdeCampos+"' type='text' id='min"+qtdeCampos+"'  size='2' maxlength='2' />"+
				      "</td>"+
				      "<td>"+
			             "<input name='tempo"+qtdeCampos+"' type='text' id='tempo"+qtdeCampos+"'  size='3' maxlength='3' />"+
			          "</td>"+
				      "<td>"+
				      "<input class=btnmain  type='button' value='Add line' onclick='addCampos();' />"+
				      "</td>"+
				    "</tr>"+
				  "</table>";
qtdeCampos++;
	}

	   var id = qtdeCampos - 1;
	   var id1 = qtdeCampos - 2;

	   //alert(id);
	   var hora = document.getElementById("hora"+id1).value;
	   var min = document.getElementById("min"+id1).value;
	   var tempo = document.getElementById("tempo"+id1).value;

	   var horaNova = document.getElementById("hora"+id);
	   var minNovo = document.getElementById("min"+id);

	   date = new Date();
	   date.setHours(parseFloat(hora));
	   date.setMinutes(parseFloat(min));

	   date.setMinutes(date.getMinutes(parseFloat(min)) + parseFloat(tempo));

	   horaNova.value = date.getHours();
	   minNovo.value = date.getMinutes();

	   if (minNovo = 0){

		   minNovo = "00";
	   }
}

function removerCampo(id) {
var objPai = document.getElementById("campoPai");
var objFilho = document.getElementById("filho"+id);

//Removendo o DIV com id específico do nó-pai:
var removido = objPai.removeChild(objFilho);
qtdeCampos = qtdeCampos - 1;
}
</script>  
 
</head>
<body bgcolor="#cc9933">
        <div class="art-sheet-agenda">
                <form id="agenda" name="agenda" method="post" action="../CadastraAgenda" onsubmit="return valida_agenda(this);">
                <input type='hidden' id='idAge1' name='idAge' value='1'>
                  <table class="art-article" border="1" cellspacing="0" cellpadding="0" width="100%" align=center>
    				<tr>
     				     <th>GGP Meeting</th>
    				</tr>
   					 <tr>
      				<td colspan="6">
  				  <div id="campoPai">
				  <table width="80%" border="0" cellspacing="0" cellpadding="0" align="center">
				   
       			    <tr>
       			    <th colspan="6" style="text-align: left;">
       			       Meeting Date:&nbsp;
            			<input type="text" name="data_cad" id="cal-field-1" value="<%//if (prazo_rs!= null){%><%//=FormatadorDatas.formatoBrasil_sem_hora(prazo_rs)%><%//}%>" size="12" tabindex="1" />
           				 <a href="#"><img src="../images/calendar.png" id="cal-button-1" border="0"></a>
            			<script type="text/javascript">
                  		Calendar.setup({
                  		inputField    : "cal-field-1",
                  		button        : "cal-button-1",
                  		align         : "Br"
                 		 });
                  		</script>
                  		</th>
                  		<!--<th>Apresentação:</th>
                  		<td colspan="4">
				          <input name="link" type="text" id="link" tabindex="2"  value="http://windchill.whirlpool.com/Windchill/servlet/TypeBasedIncludeServlet?ContainerOid=OR%3Awt.projmgmt.admin.Project2%3A151420150&oid=OR%3Awt.folder.SubFolder%3A151422061&u8=1&twoPane=true&tv.netmarkets.PJLfolderbrowser.tree=OR%3Acom.ptc.core.htmlcomp.tableview.TableViewDescriptor%3A66864"  size="60" />
				      </td>-->
                  	</tr>
                  	<tr>
                  		<th>Tecnology:</th>
                  		<td colspan="6">
                  		 <select name="tecnologia" id="tecnologia" class="select" tabindex="3">
                		<option value=''></option>
                		<%
                		ResultSet rs_tec = null;
                		if(!grupoSession.equals("Administra")){
		  				rs_tec = c.executeConsulta("select distinct(tecnologia) from tecnologia where" +retorno+" order by tecnologia");
                		}
                		else
                		{
                		rs_tec = c.executeConsulta("select distinct(tecnologia) from tecnologia order by tecnologia");
                		}
		  				 while(rs_tec.next())
		  		 		{
		  				%>
                			<option value="<%=rs_tec.getString("tecnologia")%>"><%=rs_tec.getString("tecnologia")%></option>
               			 <%
                   			}
		  		
		  		 			%>
              			</select>
				      </td>
                  	</tr>		
       			    <tr>
    				 <th width='293px'>Subject</th>
    				 <th width='115px'>Type</th>
    				 <th width='312px'>Presenter</th>
    				 <th>Schedule</th>
    				 <th>Duration</th>
    				</tr>
				     <tr>
				      <th>
                  		  <input type="text" id="assunto1" name="assunto1" size="40" onkeyup='combo_assunto(this.value,"1");' onkeydown='processReqChange_combo_assunto("1");' onclick='hide_ass("1");' /><br>
				          <div id="combo_assuntos1" style='display:none;' class='autocompleteAgeForm'></div>
				      </th>
				      <td>
				          <select name="tipo1" id="tipo1" tabindex="5">
				          <option></option>
				          <option value="Status">Status</option>
				          <option value="IST">IST</option>
				          <option value="CET">CET</option>
				          <option value="BET">BET</option>
				          <option value="PRM">PRM</option>
				          <option value="PAT">PAT</option>
				          </select>
				      </td>
				      <th>
                  		  <input type="text" id="apr1" name="apr1" size="47" onkeyup='combo_apres(this.value,"1");' onkeydown='processReqChange_combo_apres("1");' onclick='hide_users("1");'/><br>
				          <div id="combo_apres1" style='display:none;' class='autocompleteAgeForm'></div>
				      </th>
				      <td>
				          <input name="hora1" type="text" id="hora1" tabindex="7" size="2" maxlength="2" />:<input name="min1" type="text" id="min1" tabindex="7" size="2" maxlength="2" />
				      </td>
				      <td>
				          <input name="tempo1" type="text" id="tempo1" tabindex="8" size="3" maxlength="3" />
				      </td>
				      <td>
				      <input class=btnmain  type="button" value="Add line" onclick="addCampos();" />
				      </td>
				    </tr>
				  </table>
				  </div> 
				   <table  cellSpacing=1 width="60%" align=center>
				    <tr>
				    	 <th colSpan="3"><INPUT tabIndex="9" type="checkbox" value="sim"  id="comite" name="comite" >Committee</th>
     				     <th colSpan="3"><INPUT tabIndex="10" type="checkbox" value="sim" id="apr"    name="apr" >Presenters</th>
     				</tr>     
    				<tr>
     				     <th colSpan="3"><INPUT class=btnmain tabIndex="11" type="submit" value="Add Agenda" name="criarAgenda"></th>
     				     <th colSpan="3"><INPUT class=btnmain tabIndex="12" type=button onclick="window.history.back(-2)" value="Cancel" name=btnCancelar></th>
    				</tr>
				  </table>
			  </td>
			</tr>
		   </table>
		</form>
     </div>
</body>
</html>

2 coisas:
colocou o alert que falei? o que aparece?
meu nome é Felipe e não Fernando!

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:

function valida_agenda(agenda)
{
var lastRow = qtdeCampos;
var i;
if ((agenda.data_cad.value=="")||(agenda.tecnologia.value==""))
{
window.alert ('Você precisa informar os dados para cadastro')
return false;
}
for (i=1; i<=lastRow; i++) {
	
var assunto = document.getElementById('assunto' + i);
if ( assunto.value.length <= 0) {
alert('O Campo Assunto ' + i + ' esta vazia');
return false;
}

var tipo = document.getElementById('tipo' + i);
if ( tipo.value.length <= 0) {
alert('O Campo Tipo ' + i + ' esta vazia');
return false;
}

var apr = document.getElementById('apr' + i);
if (apr.value.length <= 0) {
alert('O campo Apresentador ' + i + ' esta vazia');
return false;
}

var horario = document.getElementById('horario' + i);
if (horario.value.length <= 0) {
alert('O campo Horário ' + i + ' esta vazia');
return false;
}

var duracao = document.getElementById('duracao' + i);
if (duracao.value.length <= 0) {
alert('O campo Duração ' + i + ' esta vazia');
return false;
}
}
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?"))
		return true;
		}
		return false;
}

cara… seguinte…
eu montei um html e peguei a parte dos checkbox e e validei na sua função… e funcionou…

[code]
head>

function valida_agenda(agenda)
{
alert("agenda: "+agenda.comite.checked);
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?"))   
		return true;   
		}   
		return false;   
		}  

	</script>


<title>Mili S.A.</title>
	
</head>

<form id="agenda" name="agenda" onsubmit="return valida_agenda(this);">   
		<table  cellSpacing=1 width="60%" align=center>   
                <tr>   
                     <th colSpan="3"><INPUT tabIndex="9" type="checkbox" value="sim"  id="comite" name="comite" >Committee</th>   
                     <th colSpan="3"><INPUT tabIndex="10" type="checkbox" value="sim" id="apr"    name="apr" >Presenters</th>   
                </tr>       
                <tr>   
                     <th colSpan="3"><INPUT class=btnmain tabIndex="11" type="submit" value="Add Agenda" name="criarAgenda"></th>   
                     
                </tr>   
              </table>   

	</form>[/code]

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…

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?

function valida_agenda(agenda)   
{   
var lastRow = qtdeCampos;   
var i;   
if ((agenda.data_cad.value=="")||(agenda.tecnologia.value==""))   
{   
window.alert ('Você precisa informar os dados para cadastro')   
return false;   
}   
for (i=1; i<=lastRow; i++) {   
  
var assunto = document.getElementById('assunto' + i);   
if ( assunto.value.length <= 0) {   
alert('O Campo Assunto ' + i + ' esta vazia');   
return false;   
}   
  
var tipo = document.getElementById('tipo' + i);   
if ( tipo.value.length <= 0) {   
alert('O Campo Tipo ' + i + ' esta vazia');   
return false;   
}   
  
var apr = document.getElementById('apr' + i);   
if (apr.value.length <= 0) {   
alert('O campo Apresentador ' + i + ' esta vazia');   
return false;   
}   
  
var horario = document.getElementById('horario' + i);   
if (horario.value.length <= 0) {   
alert('O campo Horário ' + i + ' esta vazia');   
return false;   
}   
  
var duracao = document.getElementById('duracao' + i);   
if (duracao.value.length <= 0) {   
alert('O campo Duração ' + i + ' esta vazia');   
return false;   
}   
}   

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?"))   
return true;   
}   
return false;   
} 

cara… nessa linha no seu código:

<input type="text" id="assunto1" name="assunto1" size="40" onkeyup='combo_assunto(this.value,"1");' onkeydown='processReqChange_combo_assunto("1");' onclick='hide_ass("1");' /><br>  

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…

[code]# var assunto = document.getElementById(‘assunto’ + i);

if ( assunto.value.length <= 0)[/code]

talvez se vc fazer document.getElementsByTagName(“assunto1”) ele retornará uma lista de elementos( acho q 2 elementos)… entende…