2013-04-29 87 views
0

我目前正在包含電子郵件的輸入字段上運行驗證。 當點擊提交時,如果電子郵件字段不驗證,然後我顯示一個錯誤覆蓋。僅在沒有驗證錯誤時提交表格

我現在的問題是,表單提交無論是否驗證。 我如何讓它只提交當一切都驗證(在我的例子電子郵件字段)

var clicked = $("button"); 

clicked.click(function() { 
    var email = $("input[type='email']").val(); 
    if (!validateEmail(email)) { 
     //Show validation error 
    } else { 
     //Dont show validation error 
    } 
}); 

Fiddle of my setup here

+0

請不要使用[tag:jquery-validate]標籤,除非您使用的是jQuery Validate插件。編輯。謝謝。 – Sparky 2013-04-29 14:27:45

回答

1

傳遞事件爲點擊功能,然後調用preventDefault該事件如果驗證失敗。 preventDefault將防止發生事件的默認操作。

var clicked = $("button"); 

clicked.click(function(e) { 
    var email = $("input[type='email']").val(); 
    if (!validateEmail(email)) { 
     e.preventDefault(); 
    } else { 
     //Dont show validation error 
    } 
}); 

工作實例:http://jsfiddle.net/2FfQw/1/

+0

這很簡單 - 謝謝! :) – user1231561 2013-04-29 09:24:46

+0

@ user1231561很高興我能幫到你 – 2013-04-29 09:26:12

0

有幾種方法可以做到這一點。我最喜歡的是掛鉤的形式提交事件,並返回false如果驗證失敗:

$('#form-id').submit(function() { 
    // do validation 

    if (!valid) 
    return false; 

    // if it's valid it will submit, no need to return true 
} 

這也是一個不錯的鉤子,如果你想使用AJAX的提交使用。