2009-11-11 93 views
1

我想使用jQuery来提交表单,因此不需要重新加载页面我不能将它挂钩到表单上。无法挂钩表单提交事件

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

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

它只是虽然不会工作;当我使用提交的表单上的提交按钮而不是显示警报时。

该表单实际上是使用jQuery的.load事件加载的,我试图将上面的代码放在页面上,并且加载表单的页面也都不起作用。

任何想法我做错了什么?

同时使用IE8和Chrome 3

+0

检查选择器是否与表格匹配。 – SLaks 2009-11-11 03:32:44

+0

它确实... id =“frmFilter”和#frmFilter – Hintswen 2009-11-11 03:34:15

+0

我建议您在调试器中实际检查它以防万一有趣的事情发生;我没有看到任何其他问题。 – SLaks 2009-11-11 03:36:37

回答

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不久前,所以任何在这个“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> 

祝你好运!

+0

我认为你需要另一个参数url和回调如:$('#target')。load('url',{},function(){}); http://docs.jquery.com/Ajax/load – Akrikos 2009-11-11 04:05:16

+0

仍然没有>。 < – Hintswen 2009-11-11 04:41:42

+0

页面上是否存在其他javascript错误?如果您安装了萤火虫,请在页面提交时留意角落中的红色X ... – Funka 2009-11-11 04:44:04

-1

在回调测试:

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

这也没有工作 – Hintswen 2009-11-11 03:41:09