[英]Angular JS does not allow preventDefault or return false to work on form submission
[英]Passing a variable to a function bound to a form submission breaks preventDefault and return false
我正在嘗試執行綁定到表單的功能,該功能會阻止瀏覽器提交表單並檢查該表單中是否缺少字段,如果沒有表單,它將繼續通過Ajax提交表單
問題是,頁面包含許多非常相似的表單,這些表單具有相同的字段,但每個表單元素的ID后僅具有唯一的數字。 我想將該數字傳遞給綁定到相關表單的函數,但是當我初始化除“ event”變量之外的任何變量時,表單將提交並忽略event.preventDefault();。 AND / OR返回false;
這是一個簡單的測試:
這是代碼:
JS:
$('#contact-form1').submit( submitForm("1") );
function submitForm(formId,event) {
var contactForm = $(this);
var forename = '#contact-forename' + formId;
var surname = '#contact-surname' + formId;
var email = '#contact-email' + formId;
var tel = '#contact-tel' + formId;
if ( !$(forename).val() || !$(surname).val() || !$(email).val() || !$(tel).val() ) {
$('.form-status').removeClass("current-status");
$('.contact-incomplete').addClass("current-status");
} else {
$('.form-status').removeClass("current-status");
$('.contact-sending').addClass("current-status");
$.ajax( {
url: contactForm.attr( 'action' ) + "?ajax=true",
type: contactForm.attr( 'method' ),
data: contactForm.serialize(),
success: submitFinished
} );
}
return false;
}
看來問題出在嘗試將變量傳遞給函數。
.submit()
需要一個函數引用 。 您正在執行的是調用返回值false
的函數。 就像在做:
$('#contact-form1').submit( false );
什么都不做。
您可以做的是傳遞一個調用您的函數的匿名函數。 像這樣:
$('#contact-form1').submit( function(e){
e.preventDefault();
submitForm.call(this, "1", e);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.