2016-07-14 47 views
0

我有一個HTML表單,特別是在iOS上,我需要防止用戶在模式出現時通過輸入「掛鉤」。如何防止iOS uikeyboard箭頭觸發「標籤」動作?

因爲iOS鍵盤沒有標準的tab鍵,所以我在引用「tabbing」時使用了鍵盤,它使用鍵盤上方工具欄中的上一個/下一個箭頭。 (見下圖)

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(),因此「tab」會在您的新窗體中起作用。

+0

這些建議很好,謝謝,但是我發現了另一種解決方法,它的開銷較小。是的,這個問題是模式下輸入字段的焦點。 – SteamDev

+0

@SteamDev,所以也許你會發布你自己的答案? – spirit