为什么Jquery表单提交事件没有触发?

7
我正在尝试通过jquery提交表单。我希望在jquery提交表单时触发表单提交事件。
但是,当表单成功提交时,提交事件处理程序无法成功调用。
以下是代码:
<html>

<head>
<title>forms</title>

<script src="../common/jquery-1.6.2.min.js"></script>
<script>
$('#testform').submit(function() {
    $.post($(this).attr("action"), $(this).serialize(), function(html) {
        $("#menu").html('<object>'+html+'</object>');
    });
    return false; // prevent normal submit
});

</script> 

</head>

<body>

    <form id="testform" action="<%=getURL%>" method="post" >
        <!-- <input type="hidden" value="DocQrySetup" name=form>
        <input type="hidden" value="bdqdb1" name=config>-->
        <input type="hidden" value="test" name=otherParams>
    </form>

    <script language=javascript>
        $('#testform').submit();
    </script>

<div id="menu" style="position:relative; bottom: 0; overflow:hidden;">
</div>
</body>

我搜索了所有的论坛,但是没有找到解决方案。


为什么有两个不同的脚本引用了 .submit() - Praveen
问题很明确,也很清楚为什么它不起作用...请参见下面@DaveForber的答案。 - David Barker
嘿,@KshitijJain,你可以将这个问题标记为已回答... :-) - Jason J. Nathan
2个回答

25

当您运行第一个脚本时,表单不存在,因此您的事件处理程序无法附加到任何内容。

要么将该处理程序移动到表单之后,要么将其包装在 <script> 标签内。

$(document).ready(function() { 
    $('#testform').submit(function() {
        /* your code */
    });
});

6
我的东西被包裹在这里和末尾,但仍然无法启动。 - Antony D'Andrea

8
当您附加事件侦听器时,表单尚未定义,请将附加事件侦听器的代码移动到表单后面或使用以下代码包装代码:
jQuery(document).ready(function ($) {
    ...
});

并添加一个提交按钮。

...
<input type="submit" value="submit">
...

阿门!这绝对是原因!他还应该删除此代码:<script language=javascript> $('#testform').submit(); </script>,首先,他没有带引号的javascript,其次它是不需要的,当然,$(document).ready有帮助。 - Solomon Closson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接