2009-11-11 125 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