2009-08-10 85 views
0

我使用帶Boxy插件的JQuery。jquery with boxy插件 - 通過ajax加載並提交表單

當用戶點擊一個鏈接一個頁面上,我呼籲Boxy.load加載形狀,其上彈出。表單加載並顯示在彈出窗口中,沒有問題。

但是,我不能形式向提交綁定事件,因爲我不能選擇窗體元素。

這是事件處理程序:

$('#flag-link a.unflagged').click (function(e) { 
     url = $(e.target).attr('href'); 
     Boxy.load(url, {behaviours: function(r) { 
      alert ($("#flag-form").attr('id')); 
      } 
     }); 
    }); 

警報顯示爲「未定義」時,顯示它。

這是形式:

<form id="flag-form" method="POST" action="somepage">   
    <table> 
     <tr><td><input type="text" name = "name"></td></tr> 
     <tr><td><input type="submit" value="OK"></td></tr> 
    </table> 
</form> 

我在做什麼錯?

回答

1

據我瞭解,live()方法必須被用來在這種情況下,一個元素綁定到一個事件:

$("#flag-form").live("submit", function(){ ... } 

目前,現場方法記錄在案,以將不支持提交事件。不過,我可以使用Chrome和FF來解決這個問題。另一方面,我無法在IE中使用它。跨瀏覽器兼容性的更好方法似乎是將表單的提交按鈕綁定到click事件。

$("#flag-form-submit").live("click", function(){ 
1

首先(小點,但潛在的麻煩來源),應該是id="flag-form"而不是id = "flag-form"(無空格)。

其次,你不應該需要r.find()。只要做到$("#flag-form").attr("id")

+0

+1 - 打我到它。只是不得不放棄相同的兩點。 – karim79 2009-08-10 22:51:57

+0

謝謝。 r.find()只是我嘗試選擇表單的很多方法之一。不幸的是,問題依然存在。 – shanyu 2009-08-10 22:58:22

0

我瞭解到,在申報作品behaviours: function (e) {}方法,除了使用活()方法。

例如爲:

$('#flag-link a.unflagged').click (function() { 
    Boxy.load(this.href, { 
     behaviours: function(r) { 
     r.find('#flag-form').bind('submit', function() { 
      // do on submit e.g. ajax calls etc. 
     }); 
     } 
    }); 
    return false; 
}); 
0

的Boxy打開iframe中的URL(url = $(e.target).attr('href');)。所以你不能從開始頁面(父頁面)找到表單。你的代碼綁定表單應該在子頁面(即Boxy iframe)中。您可以使用您的代碼檢查iframe網址,url = $(e.target).attr('href');