Как зарегистрироваться для событий изменения значения на <input type = date> на iOS - PullRequest
16 голосов
/ 16 марта 2012

Я пытаюсь создать компонент ввода даты в HTML5, чтобы я мог воспользоваться встроенным средством выбора даты / времени в iOS, и я использую jquery. У меня есть следующий код для генерации компонента:

  var $inputDate = $("<input></input>");
  $inputDate.attr("type", "date");
  $inputDate.attr("value", "2004-05-03");
  $inputDate.change(function(event)
  {
    console.log("value changed");
  });

Код выполняется внутри компонента webkit в собственном приложении. Элемент управления вводом отображается нормально, и я могу изменить значение с помощью палитры. Однако функция изменения не срабатывает, когда я изменяю значение и отклоняю средство выбора. Когда я запускаю это на веб-странице в Chrome, все работает как положено. Как мне заставить это работать на iOS?

1 Ответ

23 голосов
/ 23 марта 2012

Функция onblur вызывается при отмене выбора даты / времени. Так что это работает:

var $inputDate = $("<input></input>");
$inputDate.attr("type", "date");
$inputDate.attr("value", "2004-05-03");
$inputDate.blur(function(event)
{
  console.log("value changed");
});

В более новых версиях Chrome (и Chrome на Android):

  • событие onchange вызывается при выборе даты
  • событие onblur не вызывается при закрытии раскрывающегося списка, только когда элемент управления теряет фокус клавиатуры

Вот пример, показывающий, какое событие генерируется с использованием простого JavaScript: http://jsbin.com/iximuy/4

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