javascript
  • validation
  • 2010-09-10 77 views -1 likes 
    -1

    我在javascript上寫了簡單的自定義驗證。如果在「Si」上選擇了一個選擇並且文本字段留空,我希望它顯示警報。我不明白爲什麼它不顯示消息。爲什麼這個javascript表單驗證不起作用?

    <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> 
    

    回答

    0

    您需要將整個if語句包裝在圓括號中。

    此:

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

    應該是:

    圍繞運營商和 if
    if ((elem1.value == "Si") && (elem2.value.length == 0) && ((elem3.value.length == 0) || elem4.value.length == 0))) 
    

    (我還添加了空間,使一切更清晰易讀,而且你應該也同樣。 ,使用文本編輯器或顯示匹配大括號的IDE確實有助於跟蹤它們。)

    +0

    嘿,我確實是用編輯器(gedit)實現的。我準備發佈這個作爲我自己問題的答案。謝謝。 – andandandand 2010-09-10 02:52:54

    0

    你需要附上整個if條件爲括號:

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

    而且我總是建議在這種情況下使用螢火蟲或類似工具:它會告訴你在一個非常明確的方式,所有JavaScript錯誤。

    +0

    它實際上是括號 – andandandand 2010-09-10 02:53:31

    +0

    @dmindreader whatev呃你給它們起名,它不會改變這個點 – 2010-09-10 02:55:02

    +0

    它確實改變了它,因爲你在你的例子中都使用了它。我錯過了代碼中的括號,這是錯誤。 – andandandand 2010-09-10 03:18:12

    相關問題