jquery提交由于递归而导致错误

jquery提交由于递归而导致错误,jquery,submit,Jquery,Submit,我有一个带有onsumbit属性的表单。我正在onsumbit上调用一个javascript函数。 在表单实际提交之前,我需要在隐藏变量上设置一些值。该位在SaveQuery()函数中完成。我在页面上还有一个链接,它执行提交表单的相同操作。我添加了onsubmit,这样当有人按下Enter键时表单就会被提交 问题在于,当使用jQueryV1.4.4库时,表单似乎是递归提交的。我如何避免这种情况发生。对于jQueryV1.3.2,似乎没有问题 表格: <form id="savequery"

我有一个带有onsumbit属性的表单。我正在onsumbit上调用一个javascript函数。 在表单实际提交之前,我需要在隐藏变量上设置一些值。该位在SaveQuery()函数中完成。我在页面上还有一个链接,它执行提交表单的相同操作。我添加了onsubmit,这样当有人按下Enter键时表单就会被提交

问题在于,当使用jQueryV1.4.4库时,表单似乎是递归提交的。我如何避免这种情况发生。对于jQueryV1.3.2,似乎没有问题

表格:

<form id="savequery" action="savedquery.aspx" method="post" onsubmit="SaveQuery(); return false;">
        <input type="hidden" id="orig_q" name="orig_q" value="" />
        <input type="hidden" id="isFullText" name="isFullText" value="" />
        <input id="queryName" name="queryName" value="New Query" />
        </form>
        <table class="centerButton">
            <tbody>
                <tr>
                    <td>
                        <div id="proceedSave" class="butActive idProceed">
                            <p>
                            </p>
                            <div>
                                <a href="#" onclick="SaveQuery();">Proceed</a></div>
                        </div>
                        <!-- duplicate text item -->
                    </td>
                </tr>
            </tbody>
        </table>

中调用
SaveQuery
,同时调用
onsubmit
处理程序和
的单击操作。然后该函数再次调用
submit()
,这将触发该函数,该函数调用
submit()
,这将触发该函数,等等。。。所以它当然会重现!只需在单击事件上调用
SaveQuery
,就可以了。

您在中调用
SaveQuery
onsubmit
处理程序以及
的单击操作。然后该函数再次调用
submit()
,这将触发该函数,该函数调用
submit()
,这将触发该函数,等等。。。所以它当然会重现!只要在单击事件上调用
SaveQuery
,就可以了。

我不能评论这两个库之间的差异,但是我建议对代码进行简单的修改就可以解决这个问题

在表单标记中有一个
onsubmit=“SaveQuery();
选项卡,然后在单击
procedure
时调用此函数。在我看来,这应该显示您看到的行为,而不管jQuery的早期版本是否屏蔽了它

只需在Submit上执行此
声明即可

随机奖金评论

您正在混合JavaScript和jQuery DOM交互方法。为什么不直接使用jQuery:

$("#orig_q").val($("#txtQuery").val());
$("#isFullText").val($("#chkFulltext").attr("checked"));

我不能评论这两个库之间的差异,但是我建议对代码进行简单的修改就可以解决这个问题

在表单标记中有一个
onsubmit=“SaveQuery()选项卡,然后单击
继续
时调用此函数。在我看来,这应该是您看到的行为,而不管jQuery的早期版本是否屏蔽了它

只需在Submit上执行此
声明即可

随机奖金评论

您正在混合JavaScript和jQuery DOM交互方法。为什么不直接使用jQuery:

$("#orig_q").val($("#txtQuery").val());
$("#isFullText").val($("#chkFulltext").attr("checked"));

您不必停止提交并触发它,只需让它通过即可:

onsubmit="SaveQuery();"

var SaveQuery = function () {
  $("#orig_q").val(document.getElementById("txtQuery").value);
  $("#isFullText").val(document.getElementById("chkFulltext").checked);
}

您不必停止提交并触发它,只需让它通过即可:

onsubmit="SaveQuery();"

var SaveQuery = function () {
  $("#orig_q").val(document.getElementById("txtQuery").value);
  $("#isFullText").val(document.getElementById("chkFulltext").checked);
}

我在jQuery文档中找不到任何说明
submit()
方法将专门触发onsubmit事件的内容。内置的
submit
方法不会触发事件。我在jQuery文档中找不到任何说明
submit()
方法会专门触发onsubmit事件的内容。内置的
submit
方法不会触发事件。如果onsumbit声明被注释掉,则当用户按Enter键时表单不会提交,对吗?@itsbalur-true,因此处理表单提交操作比处理单击操作更好。如果onsumbit声明被注释掉,用户按Enter键时表单不会提交,对吗?@itsbalur-true,因此,处理表单提交操作比处理单击操作要好。这将如何在单击链接时提交表单?@itsbalur-表单应该有提交按钮-在我看来,没有任何有效的理由不这样做。@itsbalur:它必须调用该方法并提交表单:
onclick=“SaveQuery();$(“#SaveQuery”).submit()
。这将如何在单击链接时提交表单?@itsbalur-表单应该有提交按钮-在我看来,没有有效的理由不这样做。@itsbalur:它必须调用该方法并提交表单:
onclick=“SaveQuery();$(“#SaveQuery”)。submit();“