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

前端之家收集整理的这篇文章主要介绍了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,那么它将成为成功单击提交按钮,并发生正常的浏览器行为。然后,您还以事件处理程序的形式将逻辑与标记分离。

更有意义?

猜你在找的jQuery相关文章