[英]jquery form.submit() triggers handlers, but not the actual submit
我有一个带有提交按钮和处理程序的表单。 处理程序执行一些验证,如果验证不酷,则会执行preventDefault()。
我的表单上有第二个按钮,无需验证即可提交。 我的思维逻辑是:这个按钮会添加一个表示,而不是验证,然后触发提交。 提交事件将始终检查是否应该验证。
一些代码:
//Add handler for no-validation submit
$('#button-no-falco').click(function() {
$('#form').addClass('no-falco');
$('#form').submit();
});
$('#form').submit(function(e) {
//If form has no-falco, don't validate.
if ($(this).hasClass('no-falco')) {
console.log("Skipping validation. Just submit.");
return;
}
//Validation code
e.preventDefault();
});
一些HTML:
<form role="form" method="post" action="{{action_url}}" name="edit-object">
<!-- bunch of inputs -->
<button type="submit" id="submit" class="btn btn-default">Save!</button>
<button type="button" id="button-no-falco" class="btn btn-default">No validation</button>
</form>
因此,现在单击button-no-falco按钮将导致跳过整个验证,甚至会显示日志消息。 但是,实际表格尚未提交。
如果我点击常规提交按钮(点击其他按钮后)表单确实提交。
这是怎么回事?
尝试添加:
var form=$('form');
尝试,
$('.btn-default').click(function() {
if($(this).attr('id') == 'button-no-falco') {
$('#form').submit();
} else {
// add code for validation and if validation returns true then submit form
}
});
并删除此,
$('#form').submit(function(e) {
//If form has no-falco, don't validate.
if ($(this).hasClass('no-falco')) {
console.log("Skipping validation. Just submit.");
return;
}
//Validation code
e.preventDefault();
});
您可以删除绑定然后提交,无需添加和检查类
$('#button-no-falco').click(function() {
form.off(); //remove all registered handlers
form.submit();
});
小提琴: http : //jsfiddle.net/978JS/4/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.