【发布时间】:2014-03-05 13:50:59
【问题描述】:
我有一个带有提交按钮和处理程序的表单。处理程序进行一些验证,如果验证不酷,则执行 preventDefault()。
我的表单上有第二个按钮无需验证即可提交。我的思考逻辑是:这个按钮会加一个class指示,不去验证,然后触发提交。提交事件将始终检查它是否应该验证。
一些代码:
//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 按钮将导致整个验证被跳过,甚至会显示日志消息。但是实际的表单并没有被提交。
如果我单击常规提交按钮(在单击另一个按钮之后),表单会提交。
发生了什么事?
【问题讨论】:
-
我认为你需要添加 return true ;这里 if ($(this).hasClass('no-falco')) {console.log("跳过验证。只需提交。");返回真; }
标签: javascript jquery html forms validation