Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery form.submit()触发处理程序,但不触发实际的提交_Javascript_Jquery_Html_Forms_Validation - Fatal编程技术网

Javascript jquery form.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'

我有一个带有提交按钮和处理程序的表单。处理程序执行一些验证,如果验证不酷,则执行preventDefault()

我的表格上有第二个按钮,可以在未经验证的情况下提交。我的思维逻辑是:这个按钮将添加一个类来指示,而不是验证,然后触发提交。submit事件将始终检查它是否应该验证

一些代码:

    //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();
});