2011-10-03 39 views
3

我試圖完成的是使用jquery進行電子郵件驗證(非常簡單),但無論我做什麼,表單都會一直提交。表單提交將不會停止進行驗證

<form id="rfq" name="rfq" action="rfq_form" method="post" enctype="multipart/form-data"> ...

<input type="image" id="submit" name="submit" src="submit.png" border="0" />

JS電子郵件驗證:

//$("#rfq").submit(function() { doesnt seem to work either 

$('#submit').click(function() { 
    var email = $('#email').val(); 
    if(email.indexOf("@") == -1){ 
     $("#email").addClass('invalid'); 
     return false; // cancel form submission if email invalid 
    } 
    return false; // return true if no errors once i get it working 
}); 
+0

的'.submit'方法應該很好地工作:http://jsfiddle.net/LNrqb/ - 有沒有其他的代碼,可能是干擾? – Blazemonger

+0

那麼問題是什麼?會不會提交?每次提交? – jondavidjohn

+0

@johndavidjohn每次提交... –

回答

4

Working Example

首先,確保所有事件處理程序連接,一旦DOM是「準備就緒」

我的實際形式使用.submit()

$(document).ready(function() { 
    // now that document is "ready" 
    $('#formId').submit(function() { 
     var email = $('#emailInput').val(); 
     alert(email); 
     if(email.indexOf("@") == -1){ 
      alert("invalid!"); 
      return false; // cancel form submission if email invalid 
     } 
     alert("valid!"); 
     return true; // return true if no errors once i get it working 
    }); 
}); 
+0

這也是我的想法,但OP在他們的代碼塊的頂部發表了一條評論,表明這對他們來說也不起作用。 – jadarnel27

+0

嗯,我表明,實際上它...所以如果這不起作用,代碼中有錯誤,我們還沒有看到... – jondavidjohn

+0

糟糕,這是有道理的。 +1然後=) – jadarnel27

3

嘗試在準備塊包裝你的代碼。

$(document).ready(function(){ 
    // your code here 
}); 

你也應該使用<form>元件上的submit事件,我想。

+0

我經常忘記,儘管我的點擊事件從未運行,直到頁面加載後,它們仍然附加到選擇器上,這些選擇器在$(document ).ready'。 – Blazemonger

1

您可以嘗試使用此功能來驗證您的地址。

function validateEmail(elementValue){ 
    var emailPattern = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; 
    return emailPattern.test(elementValue); 
} 

然後修改您的代碼以提交表單。

$('#submit').click(function() { 
    var email = $('#email').val(); 
    if(!validateEmail(email)){ 
     $("#email").addClass('invalid');    
    } 
    else { 
     $("form").submit(); 
    } 
}); 
2

這是行得通的。如果你不明白爲什麼,隨意問:)

var validated = false; 

$(document).ready(function(){ 
    $("#rfq").submit(function(event) { 
     if (validated === true) { 
      return true; 
     } 
     event.preventDefault(); // prevent submission 
     var email = $('#email').val(); 
     if(email.indexOf("@") == -1){ 
      $("#email").addClass('invalid'); 
      return; 
     } 
     validated = true; 
     return $(this).trigger('submit'); 
    }); 
});