2010-02-10 35 views
1

我有一個腳本,生成一個模式對話框,在裏面,我想把一個jQuery的UI日期選擇器。我目前使用下面的代碼:jQuery的日期選擇器的Ajax內容失敗後第一次加載

$('#datepicker').live('click', function() { 
    $(this).datepicker({showOn:'both'}).focus(); 
}); 

哪個就好了工作,我第一次打開對話框,然後單擊分配了「日期選擇器」的ID輸入框中。

問題是,我關閉該對話框(它從DOM中刪除它的標記)並重新打開它後,datepicker不再起作用。

我已經嘗試在關閉對話框後調用$('#datepicker')。die(),然後在重新打開它時重新綁定到#datepicker輸入,但似乎也不起作用。

我真的難住這個。任何有識之士將不勝感激。

+0

有一點需要注意:使用如「日期選擇器」簡單的標識符,當您加載動態內容到對話框中可能會出現問題。例如,如果你有兩個對話框,並且都有一個日期選擇器,那麼你在頁面中用「datepicker」的「id」結束了兩件事 - 那很糟糕。我從這裏講述經驗:-)除此之外,很難說沒有看到更多細節的例子。 – Pointy 2010-02-10 21:31:42

回答

0

我的猜測是從DOM中刪除觸發元素是你的問題。爲什麼不只是hide你的模態窗口,然後show它當你需要?我相信這會照顧你的問題。

+0

不幸的是,這不是一個真正的選擇,因爲觸發模態窗口的內容也會改變,並且模態對話框的內容會根據父內容+後端的xml而變化。每當我們需要它時,重新生成對話就更容易了。我知道這聽起來令人費解,而且我們也有點不同,但是我必須在內部有一些非常嚴格的限制,可悲的是,超出了我的控制範圍。 雖然你給了我一個想法。我會嘗試使用DOM內已存在(隱藏)的內容替換#datepicker輸入,並查看是否有這個技巧。 謝謝。 – 2010-02-11 01:00:06

0

原來,使用類而不是ID(即'.datepicker'而不是'#datepicker')修復了問題,即使DOM上只有一次#datepicker發生。

即使如此,它只有在附加了.datepicker類的另一個隱藏輸入時纔有效。

所以這是兩種建議的組合,它修復了它。

感謝你們的幫助!

+0

這似乎並不適用於我,因爲插入的標記放置到位後JavaScript不運行。 – 2010-11-17 21:02:06

1

今天幫了我。 我有同樣的問題。我在對話框中通過它的id重新初始化相同的元素。第一次,我把對話框起來了。此後它不會。所以,只要給元素執行$(".datepicker").datepicker()之後的類datepicker,每次我重新打開對話框就可以解決問題。

記得把這個類在樣式表即:

.datepicker {} 
相關問題