it-swarm.com.ru

JQuery Datepicker не меняет входное значение

Я использую аддон DateQicker пользовательского интерфейса Jquery в качестве DateTimePicker http://jsfiddle.net/j5rkbnrt/1/

<input id="deliveryTime" name="deliveryTime" type="text" value="08/05/2015 10:00">

 $('#deliveryTime').datetimepicker({
     dateFormat: 'dd/mm/yy',
     timeFormat: 'HH:mm',
 });

DateTimePicker связан с полем ввода . Когда я выбираю дату, значение поля ввода не изменяется . Поэтому, когда я отправляю форму, содержащую этот ввод, я всегда получаю значение по умолчанию.

Я посмотрел на jquery datepicker по умолчанию, и это также не меняет значение ввода. https://jqueryui.com/datepicker/

Что мне здесь не хватает?

6
spike07

Вы путаете встроенный valueattribute с действительным значением , которое содержит поле ввода

Под значением атрибута я имею в виду следующее:

<input id="deliveryTime" name="deliveryTime" type="text" value="08/05/2015 10:00">

Значением attribute является value="08/05/2015 10:00". Значением может быть любая выбранная вами дата, которая вводится в поле ввода.

Таким образом, даже если атрибут value="08/05/2015 10:00", фактическое значение ввода, то есть любой текст в поле ввода, является действительным значением.

Когда вы введете новое значение в свой ввод и затем используете $('#deliveryTime').val(), вы увидите, что ваше новое значение является фактическим значением текста внутри поля ввода.

Если вы заинтересованы в изменении attribute поля ввода, которое я нахожу неоднозначным, так как val() уже возвращает это значение, тогда вам нужно сделать следующее:

$('#deliveryTime').change(function(){
    $(this).attr('value', $('#deliveryTime').val());
});

Поэтому «При каждом изменении deliveryTime установите атрибут value в качестве входного значения». Скрипка!

Как я уже сказал, это неоднозначно. Я бы порекомендовал просто использовать $('#deliveryTime').val() для выполнения той же цели.

9
Rizky Fakkel

это работает! Обновляет входное значение, но в chrome devtools он не показывает эти обновления. Попробуйте отправить эту форму и проверить сеть, тогда вы увидите, что все данные были отправлены правильно :)

0
vladymy

Вы можете использовать onSelect событие плагина datetimePicker.

 $('#deliveryTime').datetimepicker({
     dateFormat: 'dd/mm/yy',
     timeFormat: 'HH:mm',
     onSelect: function(dateText, inst) {
         $('#'+inst.id).attr('value',dateText);
    }
 });

Демо

0
Rohil_PHPBeginner