繁体   English   中英

jquery form.submit()触发处理程序,但不触发实际的提交

[英]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按钮将导致跳过整个验证,甚至会显示日志消息。 但是,实际表格尚未提交。

如果我点击常规提交按钮(点击其他按钮后)表单确实提交。

这是怎么回事?

将按钮ID从提交更改为其他内容

<button type="submit" class="btn btn-default">Save!</button>
<button type="button" id="button-no-falco" class="btn btn-default">No validation</button>

演示: 小提琴提交ID

它会覆盖表单方法submit导致.submit()调用失败

尝试添加:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM