2010-04-16 87 views
3

我有我的控制器創建一個窗體的方法:添加一個jQuery日期選擇器的動態添加<input>

... 
sbReturn.Append(String.Format("<p id='planSetupAddNewEffectiveDate'>")); 
sbReturn.Append(String.Format("<label for='txtPlanSetupAddNewEffectiveDate'>Effective Date </label>")); 
sbReturn.Append(String.Format("<input type='text' id='txtPlanSetupAddNewEffectiveDate' class='plansetupdate' />")); 
sbReturn.Append(String.Format("</p>")); 
... 

有沒有辦法附加一個datepicker到文本字段?

我已經試過了標準

$(".plansetupdate").datepicker(); 

$("#txtPlanSetupAddNewEffectiveDate").datepicker(); 

但既不實際產生的日期選擇器。我知道何時使用添加控件(即按鈕)捕捉事件.live被使用(即xxx.live('click',function()...),這種情況下是否有類似的情況?

回答

5

You可以使用.liveQuery() plugin for this.live()沒有完全替換它,你的情況是一個很好的例子,你可以這樣做讓你後的結果:

$(".plansetupdate").liveQuery(function() { 
    $(this).datepicker(); 
}); 

對於爲什麼:它之所以目前沒有工作,是因爲當你執行$(".plansetupdate").datepicker();它在做什麼是這樣的:

  • 查找與類的所有元素planetsupdate
  • 讓他們

可是......你的元素是不存在發現時,它跑了,後來才加入datepickers。 .liveQuery()繼續看。 Altneratively,如果通過$.ajax()加載這個內容你可以裝備起來在你的成功或完整的處理程序,如:

$.ajax({ 
    //Stuff 
    success: function(data) { 
    $(".plansetupdate", data).datepicker(); 
    } 
}); 

這將看看你返回的數據裏面的.planetsupdate元素上添加新的datepickers。

+0

嗯... .liveQuery拋出一個異常,但我沒有意識到我可以在ajax調用返回後連接datepicker。那種愚蠢的我:)謝謝! – SlackerCoder 2010-04-16 15:04:10

+0

使用liveQuery的絕妙建議,解決了我遇到的一個大問題。 – 2010-09-07 09:56:45

+0

@ user275074 - 歡迎:)我剛剛在同一主題上發佈了一個關於您的問題的答案,希望簡單的方法有所幫助;) – 2010-09-07 10:11:02

0

它應該工作!

你是從ajax還是在正常請求期間得到這個信息的。 你確定你的js代碼ir已經被正確執行了嗎(在厄運中創建輸入後)。

相關問題