2014-12-29 2 views
0

В настоящее время я работаю над проектом, где мне нужно использовать jQuery datepicker. Все работает красиво, за исключением одного требования ... пользователь должен иметь возможность вводить «smartdate». Умная дата - это сокращенный синтаксис, позволяющий легко генерировать дату Х количество дней в будущем или в прошлом. Синтаксис ввода даты - знак плюса (+) или минус (-), за которым следует целое число, представляющее количество дней с сегодняшнего дня. Я уже установил флаг constrainInput в моей конфигурации datepicker, чтобы пользователь мог вводить знаки. Моя проблема заключается в следующем: в каждом экземпляре введенного числового символа я хочу, чтобы календарь обновлялся, чтобы отображать текущий «выбранный» день, но в тот момент, когда вы используете операцию setDate, datepicker берет на себя управление вводом и изменяет текст, который вводит пользователь. Я углубился в исходный код немного и нашел, что метод _setDate не имеет второй параметр, называемый noChange, но передавая флаг следующим образом имеет никакого эффекта:Обновление пользовательского интерфейса jQuery Datepicker без изменения связанного ввода

$ele.datepicker('setDate', date, true);

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

Есть ли кто-нибудь, кто может предложить мне немного помощи? Это будет высоко ценится!

И для тех, кто хотел бы видеть некоторый код, вы можете проверить мой codepen здесь: 'Smart Date Module'

Второй вход является входом пользователя, первый из них является модель подложки в нем Угловое.

ответ

0

Возможно, я неправильно понял ваш вопрос, но почему бы вам просто не задать значение пользователя на входе после вызова datePicker setDate? Это обновление даты Datepicker после каждого нажатия клавиши и будет держать значение пользователя на входе:

$($ele[0]).datepicker('setDate', date); 
$ele.val(value); 

Я обновил ваш codepen, чтобы отразить изменения.

Скажите, если это не то, что вы ожидаете.

+0

Это именно тот тип функциональности, который я ищу. Я не понимал, что «ответ» будет таким простым. Я поставил ответ в кавычки, потому что я все еще чувствую, что он немного взломан, но, думая об этом больше, я не вижу никаких долгосрочных проблем. Я думаю, что меня беспокоил цикл обратной связи, но поскольку установка значения входа не вызывает событие изменения, оно работает. Иди цифра! Спасибо за вашу помощь! – THEtheChad

Смежные вопросы