Почему эта проверка формы javascript не работает? - PullRequest
0 голосов
/ 10 сентября 2010

Я написал простую пользовательскую проверку на JavaScript на основе этого документа .Я хочу, чтобы он отображал предупреждение, если выбор был выбран на "Si" и текстовые поля оставлены пустыми.Я не понимаю, почему он не отображает сообщение.

<html> 
<head>


<link rel="stylesheet" type="text/css" media="screen" href="mistylesheet.css"/>

<script type ='text/javascript'>

function mivalidate (elem1, elem2, elem3, elem4) {


     if(elem1.value=="Si")&&(elem2.value.length==0)&&( (elem3.value.length==0)||(elem4.value.length==0)){

        alert("Por favor, especifique un nombre y un email o tel&eacute;fono de contacto en su recomendaci&oacute;n ");
        elem1.focus();
        return false;
      } else {

        return true;
    }


}



</script>

</head>
<body>
<form onsubmit='return mivalidate(document.getElementById("recomiendaONo"),document.getElementById("nombreRecomendado"), document.getElementById("emailRecomendado"), 
 document.getElementById("telefonoRecomendado"))'>

     <table class="layouttable">

        <tr class='row1'><td> <b>&#191;Recomendar&iacute;a nuestros servicios a otra empresa o persona?  </b></td></tr>
        <tr class='row2'><td> 



        <select id = "recomiendaONo" name="recomiendaONo" class="required">
           <option value="">Seleccione su respuesta</option>
             <option value="Si">S&iacute;</option>
         <option value="No">No</option>

        </select>



        </td></tr>


  </table>    






<div class='margenrecomendaciones'>
<table>

<tbody>


<tr>



<td><div align="left">Nombre:</div></td> 

<td><div align="left"><input class="texto" id="nombreRecomendado" name="nombreRecomendado" type="text" size="30"/></div></td>

</tr>      




<td><div align="left">Email:</div></td>

<td><div align="left"> <input  class="texto" id="emailRecomendado" name="emailRecomendado" type="text" size="30"/></div></td>




</tr>

<tr>



<td><div align="left">Tel&eacute;fono:</div></td>

<td><div align="left"> <input class=" texto" name="telefonoRecomendado" id="telefonoRecomendado" type="text" size="30"/></div></td>




</tr>


</tbody>

</table>
</div>

    <input type="submit"/>


</form>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 10 сентября 2010

Вам нужно заключить весь оператор if в скобки.

Это:

if (elem1.value == "Si") && (elem2.value.length == 0) && ((elem3.value.length == 0) || (elem4.value.length == 0))

должно быть:

if ((elem1.value == "Si") && (elem2.value.length == 0) && ((elem3.value.length == 0) || elem4.value.length == 0)))

(Я также добавил пробелы вокруг операторов и после if, чтобы сделать все более понятным и читаемым, и вы тоже должны это делать. Кроме того, использование текстового редактора или IDE, отображающих соответствующие скобки, действительно помогает отслеживать их. )

0 голосов
/ 10 сентября 2010

Вам нужно заключить в скобки целое условие if:

if (...) {
    alert(...);
}

И я всегда предлагаю использовать firebug или аналогичный инструмент в таких случаях: он очень ясно покажет вам все ошибки JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...