2016-07-14 4 views
0

У меня есть HTML-форма, и в iOS я должен запретить пользователю «табулировать» через входы, когда присутствует модальный.Как предотвратить действие «вкладки», вызванное стрелками iOS uikeyboard?

Я положил кавычки вокруг «tabbing», потому что клавиатура iOS не имеет стандартного ключа tab, она использует предыдущие/следующие стрелки на панели инструментов над клавиатурой. (См рисунок ниже)

enter image description here

Там нет DOM события, прикрепленные к этим клавишам, поэтому чтение в e.keyCode и использование e.preventDefault() не являются опционами. Есть идеи?

+0

'$ (document) .bind ('keydown', ...)', 'mousedown',' touchstart'? Часть этого события уволена? – spirit

+0

@spirit nope, как я уже сказал в сообщении, эти стрелки не вызывают никаких событий DOM. – SteamDev

ответ

1

Решение я заканчивал реализации было что-то вроде следующего:

HTML

<!-- modal content --> 
<div class="search-modal"> 
    <input type="search" id="search-input" /> 
    <input type="text" onfocus="refocus('search-input')" style="opacity:0;" /> 
</div> 

<!-- main page content --> 
<div class="page-body"> 
    <input type="text" name="fname" /> 
    <input type="text" name="lname" /> 
    <input type="email" name="email" /> 
    <input type="tel" name="phone" /> 
    <!-- ... --> 
</div> 

JS

function refocus(id){ 
    document.getElementById(id).focus(); 
} 

Всякий раз, когда используется "следующая" стрелка, невидимое фокус ввода. Он сразу бросает фокус на исходный вход; тем самым предотвращая получение фокуса немодальными входами.

0

К сожалению, у меня нет iOS для тестирования. Но я думаю, что вы можете попробовать следующее:

  1. отключить все входы, кроме первого.
  2. после ввода пользователем некоторой информации, и вы подтвердите ее, включите следующий ввод
  3. и так далее.

Немного странный, но он может работать =).

PS. Только что понял. Вы имели в виду, что, когда модальный присутствует, пользователь может переключиться на входные данные «под» модальным?

В этом случае вы должны наложить focus() на первый элемент вашей модальной формы, так что «tabbing» будет работать в вашей новой форме.

+0

Это хорошие предложения, спасибо, но я нашел другое обходное решение с немного меньшими накладными расходами. И да, проблема была в фокусе недомодальных полей ввода. – SteamDev

+0

@SteamDev, так что, может быть, вы ответили своим собственным ответом? – spirit