【问题标题】:jQuery preventdefault submit form doesn't work when submitting form through js function?通过js函数提交表单时,jQuery preventdefault提交表单不起作用?
【发布时间】:2015-03-28 18:00:52
【问题描述】:

我有这个基本形式:

<form id="myForm" name="myForm" action="index.php" method="post">
    <input type="submit" value="Submit" />
</form>

然后我的 jQuery 来附加提交事件:

$( document ).ready(function() {
    var frm = $('#myForm');
    frm.submit(function (ev) {
        ev.preventDefault();
        $.ajax({
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {
                alert('ok');
            }
        });
    });
});

当我按下提交按钮时,它工作正常,我收到警报“ok”。

但如果我将提交按钮更改为实际按钮,然后通过 javascript 添加一个 onclick 函数,如下所示:

<input type="button" value="Submit" onclick="submitF(this.form);" />

JS:

function submitF(form) {
    form.submit();
}

我的 jQuery 事件没有触发,表单像往常一样提交。

如果我将我的 jQuery 函数附加到表单提交事件,为什么 javascript 提交表单时它不触发?

【问题讨论】:

    标签: javascript php jquery html forms


    【解决方案1】:

    这样做是因为 jQuery 不会阻止 javascript 中的本机提交触发器。
    这样做是为了防止表单提交,然后可以稍后以编程方式提交表单,例如

    $('form').on('submit', function(e) {
        e.preventDefault():
        // do stuff
        // then submit form
    
        this.submit(); // does not trigger this event handler but submits the form instead
    });
    

    如果要触发 jQuery 事件处理程序,并阻止表单提交,请执行此操作

    function submitF(form) {
        $(form).submit();
    }
    

    【讨论】:

    • 哦,我明白了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多