JQuery извлечь идентификатор, а затем прикрепить календарь на основе класса - PullRequest
0 голосов
/ 03 августа 2010

Я работаю с существующей библиотекой javascript, которая выполняет вызов AJAX, а затем выполняет дополнительную функцию обратного вызова.Функция обратного вызова получает строку HTML, которая загружается в DOM.Мне нужно назначить указатель даты jQuery для всех элементов в этой строке HTML, относящихся к классу календаря.

Упрощенный пример строки HTML из запроса AJAX:

<tr id='1234'>
    <td>
        <input type="text" value="somevalue" />
        <input type="text" class="calendar" value="21/12/2010" />
    </td>
    <td>
        <input type="text" value="someothervalue" />
        <input type="text" class="calendar" value="21/12/2011" />
    </td>
</tr>

Я могувыполните следующее в функции обратного вызова, чтобы установить указатель даты на два обязательных входа, но это вызывает странные вещи, происходящие с указателем даты, такие как переход следующей кнопки с 2010 по 1900 год и переход предыдущей кнопки к 1899.

$(".calendar").datepicker('destroy').datepicker({ dateFormat: 'dd/mm/yy', showAnim: 'fadeIn', duration: 200, gotoCurrent: true, changeYear: true, yearRange: 'c-120:c' });

Поэтому вместо этого я хотел бы просто ограничить оператор элементами внутри фрагмента HTML, предоставленного функции обратного вызова.Какой шаблон jQuery можно использовать для достижения следующего результата, отметив, что параметр html является строкой:

function SetCalendar(html) {
    $("html.children .calendar").datepicker('destroy').datepicker({ dateFormat: 'dd/mm/yy', showAnim: 'fadeIn', duration: 200, gotoCurrent: true, changeYear: true, yearRange: 'c-120:c' });

}

Ответы [ 2 ]

1 голос
/ 03 августа 2010

У тебя почти было это. Если вы используете это как функцию успеха AJAX.

function ajaxSuccessFn(html) {
    $(html).find('input.calendar').datepicker({
          dateFormat: 'dd/mm/yy',
          showAnim: 'fadeIn',
          duration: 200,
          gotoCurrent: true,
          changeYear: true,
          yearRange: 'c-120:c' 
    }).end().appendTo('#someElement');
}
0 голосов
/ 03 августа 2010

Вероятно, есть гораздо лучший способ, но это работает.У меня все еще есть досадная проблема, когда следующая кнопка на устройстве выбора даты переходит с июля 2010 года на январь 1900 года, но я полагаю, что в коде средства выбора даты есть что-то еще.

function SetCalendar(html) {
    var id = "#" + /.*?id="(.*?)"/.exec(html)[1];
    $(id).find('input.calendar').datepicker('destroy').datepicker({ 
          dateFormat: 'dd/mm/yy', 
          showAnim: 'fadeIn', 
          duration: 200, 
          gotoCurrent: true, 
          changeYear: true, 
          yearRange: 'c-120:c'  
    }); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...