#jquery #anytime
#jquery #в любое время
Вопрос:
Я пересмотрел все вопросы и ответы Anytime datepicker в Stackoverflow безрезультатно. Как мне изменить, не на этапе инициализации, дату средства выбора?
Пример использования: я хочу, чтобы иногда пользователь выбирал дату, а иногда и внешнее событие для запуска и обновления текущего значения средства выбора.
Ответ №1:
Вы хотите обновить значение средства выбора (другими словами, какие кнопки выделены) или значение поля формы? Если последнее, то вы можете просто присвоить полю новое значение, используя типичные команды JavaScript. В следующий раз, когда пользователь нажмет на поле, средство выбора будет установлено в соответствии со значением.
Единственное предостережение заключается в том, что установленное вами значение должно быть в том же формате, который вы указали для средства выбора. Если вы используете Date
объекты JavaScript, вы можете преобразовать его в правильный формат, используя новый AnyTime.Converter()
, инициализированный с той же строкой формата, и вызвать метод конвертера format()
для преобразования вашего Date
в строку.
Например:
var FMT = "%e-%b-%Y";
var conv = new AnyTime.Converter({format:FMT});
$("#field").AnyTime_picker({format:FMT});
...
var newVal = new Date(...);
$('#field').val( conv.format(newVal) );
Если вы не используете объект Date, просто будьте на 100% уверены, что вы правильно форматируете строку!
Теперь предположим, что вы действительно хотите изменить то, что показывает средство выбора (например, у вас есть средство выбора, placement:'inline'
и вы хотите, чтобы средство выбора отражало новое значение в поле):
В этом случае вам придется переместить одну строку кода в anytime.js , и добавьте еще одну строку кода в ваш JavaScript:
Во-первых, в строке 84 anytime.js , вы должны найти:
var __pickers = [];
Несколькими строками выше вы должны найти:
(function($)
Переместите эту вторую строку чуть выше первой, чтобы в итоге получить:
var __pickers = [];
(function($)
Затем, в вашем собственном коде, после того, как вы установите для поля формы новое значение, вызовите __pickers[
id ].showPkr()
для идентификатора вашего поля формы. Например, продолжая мой самый ранний пример, добавьте следующую последнюю строку:
__pickers['field'].showPkr();
Конечно, теперь, когда вы предоставили __pickers[] в качестве глобальной переменной, убедитесь, что вы не используете это же имя для каких-либо других целей в другом месте, иначе имена будут конфликтовать.
Комментарии:
1. Эндрю: согласны ли вы, что такого рода функциональность должна быть частью набора функций вашего виджета?
2. Удивительно, но вы первый, кто попросил об этом! В любом случае я (медленно) работаю над совершенно новой библиотекой замены и постараюсь включить эту функциональность.