2013-03-15 82 views
0

我想阻止用戶提交表單中的數據,但是當我使用JavaScript對其進行測試時,它不會返回true。阻止用戶提交

這是提交按鈕:

input type="submit" value="S'inscrire" name="inscrire" onsubmit="return Verifier(this.form);"> 

,這是爲JS測試函數的代碼:

function Verifier() 
     { 
      var mdp1 = document.form.mdp.value, 
         mdp2 = document.form.confirmer.value, 
         email = document.form.email.value, 
         pseudo = document.form.pseudo.value; 

      var testMdpIdentique = (function() { 

        if(mdp1 == mdp2) return true; 
        else return false; 
       })(); 


      if(!testMdpIdentique || mdp1 == "" || mdp2 == "" || email == "" || pseudo== "") 
      { 
       alert ('Il faut remplir tous les champs'); 
       return false; 
      } 
      return true; 

     } 

的問題是,它的提交信息,即使測試是無效的,我嘗試在Valider函數中嘗試一條警報消息,但它沒有奏效。

+1

爲什麼'testMdpIdentique'指定了一個自調用函數表達式? – 2013-03-15 19:26:41

+1

您可以簡單地寫出 var testMdpIdentique =(mdp1 == mdp2); – 2013-03-15 19:33:29

回答

2

在普通的JavaScript

您可以使用函數的返回值,以防止表單提交

<form name="myForm" onsubmit="return validateMyForm();"> 

和功能類似

<script type="text/javascript"> 
function validateMyForm() 
{ 
    if(check if your conditions are not satisfying) 
    { 
    alert("validation failed false"); 
    returnToPreviousPage(); 
    return false; 
    } 

    alert("validations passed"); 
    return true; 
} 
</script> 

在jQuery中

$('#form').submit(function (evt) { 
    evt.preventDefault(); 
    window.history.back(); 
}); 

在DOJO

dojo.connect(form, "onsubmit", function(evt) { 
    evt.preventDefault(); 
    window.history.back(); 
}); 
-1

我認爲下面的代碼在語法上是不正確的。

var testMdpIdentique = (function() { 

       if(mdp1 == mdp2) return true; 
       else return false; 
      })(); 

替換

var testMdpIdentique = function() { 

       if(mdp1 == mdp2) return true; 
       else return false; 
      }; 

而且你不需要通過(this.form)在onclick事件。一般來說,提交按鈕會提交表單,而您的onClick回調方法中存在語法錯誤。

+1

'-1' - 並沒有真正解決這個問題,並且將'testMdpIdentique'從布爾變爲函數對象,這無疑會影響其餘的代碼。 – 2013-03-15 19:54:36

+0

該代碼完全正確,但不必要。 – 2013-03-15 20:06:17