无法挂钩表单提交事件

时间:2009-11-11 03:24:44

标签: jquery

我正在尝试使用jQuery提交表单,因此页面不需要重新加载我不能让它挂钩到表单上。

<form action="index.php" method="get" id="frmFilter">

$("#frmFilter").submit( function () {
    alert('t');
    return false;
});

但它不会起作用;当我使用表单上的提交按钮时,它提交而不是显示警告。

表单实际上是使用jQuery的.load事件加载的,我试图将上面的代码放在带有表单的页面以及加载表单的页面上,两者都不起作用。

知道我做错了吗?

使用IE8和Chrome 3进行测试。

2 个答案:

答案 0 :(得分:4)

您提到使用jquery的load方法将表单转储到您的页面上。这意味着在submit完成其工作时,“父页面”document.ready中触发的任何类型的load事件处理程序都已被触发。您需要做的是找到一种方法来在加载完成后附加此事件 ...我可以建议两种方式:

一,在您的“父页面”中,在加载完成后,在回调中附加事件。例如:

$('#sometarget').load('someform.php', function() {
    // this is the load "complete" callback. attach events in here.
    $("#frmFilter").submit( function () {
        alert('t');
        return false;
    });
});

另一个想法是把这个脚本放在“someform.php”(或者你称之为的任何东西!)中,但是作为文档的一部分,不是在它的头部或者自己的“document.ready”。 (请记住,document.ready很久以前已经解雇了,所以这个“someform”页面自己的“document.ready”中的任何内容都不会在通过load注入时看到光明......)

父母身份

$('#sometarget').load('someform.php');

表格页

<form action="index.php" method="get" id="frmFilter">
    <input type="..." />
    <input type="..." />
</form>
<script type="text/javascript">
$("#frmFilter").submit( function () {
    alert('t');
    return false;
});
</script>
祝你好运!

答案 1 :(得分:-1)

在你的回调中:

$("#frmFilter").submit( function (e) {
    e.preventDefault();
    alert('t');
    return false;
});