2009-11-03 45 views
6

我有一個呈現爲表格的gridview。我有一個「添加」按鈕並單擊它,它將在表格中創建一個新行。行創建使用jQuery中的「clone(true)」方法完成。克隆的行是隱藏在gridview中的虛擬行。我已經爲TextBox分配了jQuery DatePicker。它適用於現有的行。但是當我單擊DatePicker文本框爲新添加的行時,它不會打開。它打開了現有的行。可能是什麼問題?jQuery DatePicker不能在新添加的行上工作

我的代碼是這樣的:

$("input[name $= 'txtDateOrdered']").datepicker({ 

     showButtonPanel  : true 
    , showOn    : 'button' 
    , buttonImageOnly  : true 
    , buttonImage   : '../../Image/calendar.gif' 
}); 
+0

你有鏈接或其他? 您確定在錯誤控制檯中沒有錯誤嗎? – 2009-11-03 14:24:59

+0

你應該發佈一些源代碼甚至更好,一個工作的例子。 – 2009-11-03 14:45:38

回答

7

很難用出來告訴看到你的代碼,但..

這可能是由於用於分配的日期選擇器的輸入端的jQuery是叫頁加載。因此,當克隆輸入時,新克隆的輸入沒有連接到datepicker(因爲它在頁面加載時不存在)。

在調用克隆方法後,您需要將日期選擇器掛接到新輸入。

3

我假設你在document.ready中添加了datepicker到所有匹配給定選擇器的元素。這不會將其添加到未來創建的元素中。要做到這一點,你應該檢查出jQuery live

綁定的處理程序,爲目前所有的事件(如 點擊) - 和未來 - 匹配的元素。

+0

沒有工作▼。任何其他想法? – superachu 2009-11-03 14:09:53

0

也許克隆的文本框與原始文件夾具有相同的ID,從而混淆日曆控件? 如果不是,請提供更多代碼和可能的錯誤消息。

+0

沒有沒有工作? – superachu 2009-11-03 14:14:12

0

您還可以添加/強制一個事件來管理該過程。 舉個例子,我有一個地方我添加和自動完成添加項目。 我這樣管理「變」事件(內.change()函數):

$(this).change(); // fire change event (to be used in other user controls) 

然後我打電話change事件處理函數內的功能具有自動完成它,將其添加到特定項目該項目。 還有其他的方式,我的情況指示我手動執行此操作,因爲我操縱一個複雜的新增部分,而不僅僅是一個錶行。

/* apply autocomplete function */ 
function myAddAuto() 
{ 
    $(".cptEntryArea").autocomplete("mywebservice/myService.asmx/GetMyAutocomplete", { 
     dataType: 'json', 
     data: {}, 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     parse: function(data) { return myAutocompleteJSONParse(data); }, 
     maxRows: 100, 
     formatItem: function(row) { return row["Description"] + ' (' + row["MyCode"] + ')' }, 
     minChars: 2, 
     matchSubset: false, 
     scrollHeight: 100, 
     width: 300 
    }); 
}; 

還有其他的方法,但基本前提是相同的 - 的處理程序添加到您添加到表中的行內新添加的實體。

0

試試這個:

$("row-you-are-cloning").clone().appendTo("your-table").datepicker({ 
    showButtonPanel  : true, 
    showOn    : 'button', 
    buttonImageOnly  : true, 
    buttonImage   : '../../Image/calendar.gif' 
}); 
10

你必須首先從克隆的元素去掉 「hasDatepicker」 級。

$(".selector").removeClass('hasDatepicker').datepicker({ 
     showButtonPanel  : true 
    , showOn    : 'button' 
    , buttonImageOnly  : true 
    , buttonImage   : '../../Image/calendar.gif' 
}); 
+1

我剛剛遇到了同樣的問題,這是爲我修復它的關鍵。謝謝Miya。 – 2012-03-15 15:55:55