微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery:form不提交$(“#id”) submit(),但会提交一个’提交’按钮?

<form method="post" action="load_statements.PHP?action=load" id="loadForm"
                            enctype="multipart/form-data">

这是我的形式,这看起来对我很好。在这种形式,我把这个按钮:

<input type="button" name="submit" id="submit" value="Submit" onclick="confirmSubmit()" class="smallGreenButton" />

这里是它调用函数

function confirmSubmit() {
    // get the number of statements that are matched
    $.post(
        "load_statements.PHP?action=checkForReplace",{
            statementType : $("#statementType").val(),year : $("#year").val()
        },function(data) {
            if(data['alreadyExists']) {
                if( confirm("Statements already exist for " + $("#statementType").html() + " " + $("#year").val() +
                    ". Are you sure you want to load more statements with these settings? (Note: All duplicate files will be replaced)"
                )) {
                    $("#loadForm").submit();
                }
            } else {
                $("#loadForm").submit();
            }
        },"json"
    );
}

并且你可以看到,它调用$(“#loadForm”)。submit();但是窗体不提交(即页面不刷新)。这是为什么?

谢谢!

解决方法

http://api.jquery.com/submit/

jQuery submit()事件添加一个事件侦听器,以在您提交表单时发生。所以你的代码基本上没有绑定到submit事件。如果你想提交表单,你使用老式的JavaScript(document.formName.submit())。

编辑:

我离开我的原始答案完整,指出我在哪里(因为至少有两个人已经downVote我)。我想说的是,如果你有一个这样的函数,它是混乱的为什么你将发布的值在一个ajax部分,然后使用jQuery提交表单。在这种情况下,我将事件绑定到按钮的点击,然后返回true如果你想要返回,否则返回false,像这样

$('#submit').click( function() {
  // ajax logic to test for what you want
  if (ajaxtrue) { return confirm(whatever); } else { return true;}
});

如果此函数返回true,那么它将成为成功单击提交按钮,并发生正常的浏览器行为。然后,您还以事件处理程序的形式将逻辑与标记分离。

更有意义?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐