2012-03-21 2 views
10

Я использую ввод месяца ввода (аналогично jQuery UI datepicker) для поля истечения срока действия кредитной карты.Как отключить клавиатуру iPhone для заданного поля ввода на веб-странице

Мне нужно подавить клавиатуру iPhone, потому что она скрывает сборщик событий.

Я попытался установить поле для чтения, и это не приемлемое решение - в Safari iOS 5.1 поля readonly пропускаются при навигации по клавиатуре (предыдущие/следующие кнопки на клавиатуре). Размытие поля также неприемлемо, поскольку оно вызывает проверку (мы также используем проверку jQuery).

Есть ли способ отключить клавиатуру iPhone на одном поле, не устанавливая его только для чтения или размытия?

ответ

5

Я не сталкивался с тем, чтобы скрыть клавиатуру. Но подумали ли вы, что альтернативный способ отображения «ввода». Один из вариантов будет использовать <input type="month" />, который привносит в iOS5 собственный сборщик месяцев.

Второй вариант - стиль, например. элемент span в качестве входного элемента (-webkit-внешний вид не работает на iOS) и добавление tabindex для элемента. Это также может работать, хотя я не знаю, как вы выбираете сборщик месяцев.

Третий вариант - не можете ли вы предотвратить процесс проверки, когда размытие поля запускается вручную?

+1

Nice! '' делает лучший месяц для iPhone. Opera 11.6 выдает полный выбор даты, поэтому мне придется как-то обойти это. Это не отвечает на заданный вопрос, но похоже, что он решает проблему. –

+1

Итак, я сделал проверку дерьмового агента для iPhone и iPod и установил атрибут type в «month», если true, и только загрузил monthpicker, если false. Прекрасно работает. Я снова перейду с помощью screenize + ontouchstart вместо проверки агента пользователя. Большое спасибо! –

2

У меня был такой же вопрос в Drupal, где входные поля будут добавляющим динамически, поэтому я добавил некоторые JS, проверяя Iphone/Ipad и добавлено свойство «только для чтения»

var checkUserAgent = navigator.userAgent; 
    if (checkUserAgent.match(/iPad/i) || checkUserAgent.match(/iPhone/i)) { 
     var checkBabyId1 = $('#babys_due_date_id').length > 0; 
     if (checkBabyId1 == true) { 
      $('#babys_due_date_id').find('input').prop('readonly', true); 
     } 
    } 
Смежные вопросы