2013-07-04 60 views
0

我在我的網站中使用jQuery DatePicker。我希望datepicker上的兩個下拉菜單:一個用於選擇月份,另一個用於選擇年份。因此,我在下面的格式寫:JQuery DatePicker不工作

 $('.datepicker').datepicker({ 
    changeMonth: true, 
    changeYear: true 
}); 

我想使這個選擇器可重複使用的,因此我做一個函數,該函數的格式參數,如如下:

function RegisterDateTimePicker(options) { 

var test = "{" + options + "}"; 

$('.date').datepicker(test); 
} 

參數「選項」以上是由字符串組成的變量

"changeMonth: true, changeYear: true" 

現在沒有顯示datepicker。我在調試時得到的錯誤是:

Uncaught TypeError: Cannot call method 'apply' of undefined 

請提供擺脫此問題的方法?

回答

4

選項應該是一個對象,而不是一個字符串。你做錯了!

如果options是一個對象,你可以改變功能,這個(使其工作):

function RegisterDateTimePicker(options) { 
    $('.date').datepicker(options); 
} 

,但它不是一個對象,它是一個字符串,這是一個壞主意。你應該改變它爲一個對象,除非你有一個很好的理由讓它保持字符串 - 你應該向我解釋之前,我可以進一步幫助你。

編輯:中 除了傳遞一個字符串,你應該傳遞一個對象,也許是這樣的:

var options = { 
    changeMonth: true, 
    changeYear: true 
}; 
//now call your function: 
RegisterDateTimePicker(options); 

或者你希望你的可重複使用的功能總是在日期選擇器使用相同的選項?那麼這樣做:

function RegisterDateTimePicker(options) { 
    var options = { 
    changeMonth: true, 
    changeYear: true 
    }; 
    $('.date').datepicker(options); 
} 
+0

oh..which對象的類型?我怎麼能改變這個字符串到那種類型的對象? –

+0

你不能輕易地將字符串更改爲對象而不解析它。爲什麼它是一個字符串呢?你應該構建一個對象並通過它!在答案中包括一個例子 – mkoryak

+0

謝謝你關於傳遞對象作品的想法.. –

0

你可以做這樣的方式:

var options ={changeMonth: true, changeYear: true}; 
RegisterDateTimePicker(options);