我在页面中有多个表单,每个表单都有一个提交。但它不起作用,因为这给我两种形式。有人知道这样做吗?
由于
$(".submit").click(function() {
processBeforeSend($(".submit").closest("form"));
});
function processBeforeSend(form) {
form.each($('input'), function() {
if ($(this).attr('class') == 'integer'){
validateInteger(field);
}
else{
if (filedClass == 'radio'){
validateRadio(field);
}
else{
}
}
});
答案 0 :(得分:1)
我没有使用submit
按钮的点击事件,而是让submit
按钮完成工作 - 触发表单的submit
事件:
$("form").on( 'submit', processBeforeSend );
function processBeforeSend() {
//'this' in here refers to the form whose submit event was triggered.
$(this).find('input').each(function(i, field) {
//'field' was not defined but in here it equals 'this'
//and refers to the current input element
//An element can have more than one class so $(this).attr('class') is not the way to go.
if( $(this).hasClass('integer') ){
validateInteger(field);
} else if( $(this).hasClass('radio') ) {
validateRadio(field);
} else {
}
});
}
答案 1 :(得分:1)
使用click
代替submit
意味着键盘提交将绕过您的代码!始终使用submit
事件代替表单。如果您使用submit
<{1}}事件this
,那么<{1}}
此外,您的验证可能要求表格为&#34; not&#34;验证失败时提交。因此,如果任何验证失败,请将事件对象传递给您的验证并调用form
。
e.g。
e.preventDefault()
答案 2 :(得分:0)
您需要找到包含所点击的form
元素的.submit
,因为您可以使用this
来引用点击处理程序中点击的.submit
元素< / p>
$(".submit").click(function() {
processBeforeSend($(this).closest("form"));
});