jQuery UI datepicker选项作为变量

时间:2011-01-06 03:29:22

标签: javascript jquery datepicker

我在页面函数上有许多输入作为JQ UI datepicker。每个都需要有不同的设置。我想最小化JS,所以我将设置保存为每个人的属性。

<input type="text" class="datepicker" name="dateofbirth" id="dateofbirth" size="20" value="" options="{ dateFormat: 'yy-mm-dd',changeYear: true,yearRange: '1920:2010'}" />

<input type="text" class="datepicker" name="expdate" id="expdate" size="20" value="" options="{ yearRange: '2011:2020'}" />

我使用js动态加载选项作为设置。

    $(document).ready(function(){
 $(".datepicker").each(function(index){
  $(this).datepicker("option" , $(this).attr('options'));
 });
});

datepicker无效。如果我在$ this.datepicker之后清空括号,它可以正常工作。

我还尝试了另一种分配设置的方法。 (“选项”,......)没有骰子。

3 个答案:

答案 0 :(得分:2)

试试这个

$(this).datepicker(eval('(' + $(this).attr('options') + ')'));

或者使用json解析器http://www.json.org/js.html

答案 1 :(得分:2)

基本上你正在这样做:

$(document).ready(function(){
    $(".datepicker").each(function(index){
        $(this).datepicker("option" , "{ dateFormat: 'yy-mm-dd',changeYear: true,yearRange: '1920:2010'}" );
    });
});

当你需要做任何一次

$(document).ready(function(){
    $(".datepicker").datepicker({ dateFormat: 'yy-mm-dd',changeYear: true,yearRange: '1920:2010'});
});

或者

$(document).ready(function(){
    $(".datepicker").datepicker();
    $(".datepicker").datepicker("option" , "dateFormat", 'yy-mm-dd');
    $(".datepicker").datepicker("option" , "changeYear", true);
    $(".datepicker").datepicker("option" , "yearRange", '1920:2010');
});

第一个解决方案使用一组选项启动日期选择器,而第二个解决方案启动一个日期选择器,然后设置各个选项。你的版本试图成为两者的混合体,并尝试使用字符串而不是用大括号括起来的对象文字。

答案 2 :(得分:2)

您可以使用which is evil,而不是eval$.parseJSON,btw):

$(this).datepicker( "option" , $.parseJSON( $(this).attr('options')) );

但是,您应该小心拥有有效的JSON字符串。