Javascript jquery form.submit()触发处理程序,但不触发实际的提交
我有一个带有提交按钮和处理程序的表单。处理程序执行一些验证,如果验证不酷,则执行preventDefault() 我的表格上有第二个按钮,可以在未经验证的情况下提交。我的思维逻辑是:这个按钮将添加一个类来指示,而不是验证,然后触发提交。submit事件将始终检查它是否应该验证 一些代码:Javascript jquery form.submit()触发处理程序,但不触发实际的提交,javascript,jquery,html,forms,validation,Javascript,Jquery,Html,Forms,Validation,我有一个带有提交按钮和处理程序的表单。处理程序执行一些验证,如果验证不酷,则执行preventDefault() 我的表格上有第二个按钮,可以在未经验证的情况下提交。我的思维逻辑是:这个按钮将添加一个类来指示,而不是验证,然后触发提交。submit事件将始终检查它是否应该验证 一些代码: //Add handler for no-validation submit $('#button-no-falco').click(function() { $('#form'
//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>
拯救
无验证
因此,现在单击按钮no falco按钮将导致跳过整个验证,甚至会显示日志消息。但是,实际表格并未提交
如果我单击常规提交按钮(在单击其他按钮后),表单将提交
发生了什么事?将按钮id从提交更改为其他内容
<button type="submit" class="btn btn-default">Save!</button>
<button type="button" id="button-no-falco" class="btn btn-default">No validation</button>
保存!
无验证
演示:
它覆盖表单方法submit
,导致.submit()
调用失败尝试添加:
var form=$('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();
});
小提琴:我想你需要加上return true;这里是if($(this.hasClass('no-falco'){console.log(“跳过验证。只需提交”);返回true;}哦,对了,我太草率了。我这样做了,但是我没有发布代码。我会在我的原始帖子中编辑它。我不会在一百万年内猜到这一点。将ID更改为“提交按钮”,然后它突然工作了。耶!拥有
name=submit
或id=submit
会导致jQuery处理程序失败!有人能解释一下这背后的技术混乱吗?因为在我看来,这毫无意义。。。o。O@RomeoSierra它重写表单方法submit,导致.submit()调用失败
,表单“有一个submit属性,它是一个函数,但是当您有一个名为submit
的输入元素时,表单的submit
属性值将被重写为该元素(名称submit`referenceSo简言之,它的意思是表单属性的行为有点依赖于name
属性,不是吗?@RomeoSierra是的,它是一种允许您使用表单引用获取输入值的功能。例如:如果您有一个名为age的输入和一个表单引用frm
,那么您可以使用frm.age.value
获取age
字段的值我也喜欢这个!没想到!
$('#button-no-falco').click(function() {
form.off(); //remove all registered handlers
form.submit();
});