2013-07-04 159 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);