2016-07-14 3 views
0

私はHTMLフォームを持っています。特にiOSでは、モーダルが存在するときにユーザーが入力を「タブ」するのを防ぐ必要があります。iOS uikeyboardの矢印でトリガされる「タブ」アクションを防止するにはどうすればよいですか?

iOSキーボードに標準のtabキーがないため、キーボードの上のツールバーにある前/次の矢印が使用されるため、「タブ」の前後に引用符を入れています。そうe.keyCodeに読んでe.preventDefault()はオプションではありません使用して、これらのキーに添付なしDOMのイベントはありません

enter image description here

(下の画像を参照)。何か案は?

+0

'$(document).bind( 'keydown'、...)'、 'mousedown'、' touchstart'?このイベントのいくつかは解雇されていますか? – spirit

+0

@ spirit nope、私が記事で言ったように、これらの矢印はどんなDOMイベントも引き起こさない。 – SteamDev

答えて

1

は私が実装し終わったソリューションは、次のようなものでした入力がフォーカスを獲得する。それはすぐに元の入力にフォーカスを戻します。非モーダル入力がフォーカスを獲得することを防止する。

0

残念ながら、テストするiOSはありません。しかし、次のように試してみるといいと思います。

  1. 最初のものを除くすべての入力を無効にしてください。
  2. ユーザーが情報を入力して検証した後、次の入力を有効にして
  3. などのように入力します。

少しでもうまくいくかもしれませんが)。

PS。ただ実現しました。モーダルが存在するときよりも、ユーザーがモーダルの「下」の入力に切り替えることができるということを意味しましたか?

この場合、モーダルフォームの最初の要素にfocus()を強制しなければならないため、新しいフォームでは「タブ」が機能します。 "次へ" の矢印が使用されるたびにJS

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

、目に見えない

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> 

+0

これらは良い提案です、ありがとうございますが、もう少しオーバーヘッドの少ない別の回避策を見つけました。そして、はい、この問題は、モード下の入力フィールドに焦点が当てられていました。 – SteamDev

+0

@SteamDev、あなたはあなた自身の答えを投稿しますか? – spirit

関連する問題