我使用jQuery驗證引擎(https://github.com/posabsolute/jQuery-Validation-Engine)對我的一種形式。該驗證效果很好,但不能阻止越來越提交即使字段值不與驗證符合形式:jQuery驗證引擎:表單提交未經驗證
我有一個通訊Sigunp形式如下:
<form id="submit-newsletter" method="POST" action="">
<input type="text" class="searchform validate[required, custom[email]]" value="Enter Your Email" id="email" name="nw-email" onblur="defaultInput(this);" onfocu s="clearInput(this);" />
<input type="hidden" id="newsletter" name="newsletter" value="nl" />
<input type="submit" class="submit" title="Signup" value="Sign Up" name="newsletter-signup" onclick="newsletterSubscribe(event);" />
</form>
這種形式通過Ajax提交如下:
// Newsletter Subscription Without Refresh
function newsletterSubscribe(e) {
e.preventDefault();
var dataString = 'nw-email=' + $('input[name=nw-email]').val() + '&newsletter=' + $('input[name=newsletter]').val();
$.ajax({
type: "POST",
url: "/newsletter/",
data: dataString,
success: function() {
$('#newsletter-box').html('<div id="message"></div>');
$('#message').html('<img width="18px" height="18px" src="/static/img/smtick.png" /><h5>Thank You !</h5>')
.append('<p>We have recieved your request. Please Check your mail for activation instructions. You will start recieving our newsletter once you have verified t his email address.</p>')
.hide()
.fadeIn(1200);
}
});
return false;
}
驗證觸發如下:
$(document).ready(function() {
$('#submit-newsletter').validationEngine();
});
現在我可以看到驗證錯誤消息,但如果我按下提交按鈕,表單提交無關的事實值不是一個電子郵件地址。
什麼想法?
感謝這工作周圍的其他方法,因爲它會檢查,如果它是有效的,那麼它返回false。然而我明白了,我已經改變它來檢查它是否有效,然後繼續ajax函數,否則返回false。謝謝@Jason – Amyth
+1。超級解決方案,由於 –
事實上,這是絕招,以檢查的形式是有效的,但我這個自定義AJAX POST上提交表單綁定事件,而不是按一下按鈕的形式可能會甚至貼出當用戶點擊任何進入)'''$( 「#myForm會」)上( '提交',函數(如){e.preventDefault(); ....})'''在這種情況下,如果事件觸發字段會的形式,你可以輕鬆地構建數據對象傳遞這樣的:'''數據:$(本).serialize()''',就是這樣,沒有必要建立dataString了;) – qdev