Опции выбора даты в jQuery UI как переменная - PullRequest
3 голосов
/ 06 января 2011

У меня есть несколько входов для функции страницы в качестве указателя даты JQ UI. У каждого должны быть свои настройки. Я хочу свести к минимуму 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 ]

2 голосов
/ 06 января 2011

по сути, вы делаете это:

$(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');
});

Первое решение инициируетDatePicker с набором параметров, в то время как второе решение инициирует DatePicker, а затем устанавливает отдельные параметры.Ваша версия пыталась быть неким гибридом из двух и пыталась использовать строку вместо литерала объекта, заключенного в фигурные скобки.

2 голосов
/ 06 января 2011

Вместо использования eval (, что является злом , кстати), вы можете использовать $.parseJSON следующим образом:

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

Однако вы должныбудьте осторожны, чтобы иметь правильную строку JSON.

2 голосов
/ 06 января 2011

Попробуйте это

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

Или используйте парсер json http://www.json.org/js.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...