2010-02-20 138 views
0

我的表單提交有問題,這裏是交易。我正在創建一個圖片網站,並且我想爲每張圖片創建評論,所以我有一個錨鏈接,當點擊時顯示評論表單,即將html加載到不在第一位的網頁中,所以頁面內部加載的表單不提交。表單不會提交

動態加載到網頁中的表單無法提交嗎?這可能會帶來什麼其他問題?我甚至試圖把類似<a href="#" id="test">Click me</a>加載的內容裏面,我加

$("#test").click(function(){ 
alert("SOMETHING"); 
}); 

到我的javascript,它不會警告以及..我究竟做錯了什麼?

編輯

確定這裏是我如何加載的形式..

下面我有我的形象,一個錨鏈接:

<a href="javascript:;" onclick="showComments('22');" class="answer_comment">Add image content</a> 

這裏是JavaScript的是外面的文件準備好功能:

function showComments(post){ 
     var xHTML = "<div class=\"addComment\">"; 
     xHTML += "<form action=\"<?=base_url()?>images/post_comment/" + post + "\" method=\"post\" id=\"comment_form\" name=\"comment_form\">"; 
     xHTML += "<input type=\"hidden\" id=\"comment_post_id\" name=\"comment_post_id\" value=\"" +post + "\"/>"; 
     xHTML += "<textarea name=\"comment_text\" class=\"comment\" rows=\"8\" cols=\"40\"></textarea>"; 
    ..... 

這樣我填滿我的意見形式..需要更多的代碼?

+0

HTML看起來像你正在抓取什麼? – 2010-02-20 13:13:20

+0

@Pekka我更新了我的問題。 – ant 2010-02-20 13:19:11

+0

查看我的更新回答。 – 2010-02-20 13:23:32

回答

6

動態加載的元素在你的情況下要七拼八湊也提醒,你想:

$("#test").live('click', function() { 
    alert("SOMETHING"); 
}); 

這將觸發對任何元素與id="test",無論是AJAX加載與否。無論您想使用哪種處理程序,都應使用相同的樣式。請閱讀.live() documentation以獲取完整的故事......基本上,它位於根DOM級別,監聽點擊和行爲,因此在定義事件處理程序時它並不關心什麼是或不存在,這就是你想要動態加載的內容。

+0

你是對的,點擊功能不能正常工作,但你的直播它正在工作,爲什麼? – ant 2010-02-20 13:23:39

+0

因爲當您設置'click'事件時,它僅適用於設置時已經存在的DOM元素*,而不適用於將來的設置。 +1 - 我從來沒有明白'活着'對我有什麼好處,現在我知道了。 – 2010-02-20 13:25:29

+0

@Nick Craver我到現在都沒有得到活的東西,很好的回答,完全釘了它+ 1 +接受 – ant 2010-02-20 13:33:12

0

你不需要函數()後的{嗎?

}' before the);`在第三行?

$("#test").click(function() { 
alert("SOMETHING"); 
}); 
+0

是的是我在編寫時犯了一個錯誤.. – ant 2010-02-20 13:14:55

+0

好的抱歉...當我不知道一個問題的答案是否立即,我傾向於查看發佈代碼的語法。爲了找出(長時間之後)代碼的語法是錯誤的,它發生在我身上幾次。特別是使用javascript,這可能很難立即找到。但也許我是唯一犯這種錯誤的人。雖然對你的問題有很好的答案 - 我今天學到了一些東西。 – Edelcom 2010-02-20 14:55:51

0

使用AJAX獲取表單通常不是問題。

浮現在腦海中爲什麼只有原因形式不會屈服於:

  • 這不是有效的HTML - 應該可以找出使用Firebug

  • 提交時,您正在處理它通過它的ID(如$('#comment_form').submit();)失敗,因爲已經有一些具有該ID的元素。要了解是否屬於這種情況,請嘗試在表單內注入正常的<input type=submit>,然後查看是否有效。

  • 您注射到另一個<form>元素 - 容易找出與螢火蟲

0

您在末尾添加額外的{到您的代碼:

$("#test").click(function() 
alert("SOMETHING"); 
{); 

糾正和如果它仍然不起作用,請嘗試使用live方法,該方法適用於以及未來元素。

$("#test").live('click', function(){ 
    alert("something"); 
}); 

此外,請確保如果有多個表單,它們不會重疊。

+0

錯誤寫在這裏.. – ant 2010-02-20 13:14:28

0

動態添加的表單應該與原始html中的表單相同。確保在添加元素或使用live方法後添加事件處理程序。