2016-11-01 18 views
0

我々はぼかしを防ぐ停止またはfield.then 5第二のユーザの後の入力で5秒間タブで移動する一つのフィールドからanother.Iにタブがoffon機能を使用することができますが、それは.hereに動作しないことができ、私のコード http://jsfiddle.net/GV3YY/99/jqueryのタブを防ぐ方法?

です
$("input").off("blur"); 

setTimeout(function(){ 
$("input").on("blur"); 
},5000) 
+0

あなたは '' e.keycode''を試しましたか? –

+0

HTMLの 'tabindex'属性を' -1'に設定しようとしましたか? '$(セレクタ).attr( 'tabindex'、 '-1');'。 – PHPglue

+0

5秒間入力フィールドには何も入力できますが、フォーカスをボタンに移動することはできませんが、5秒後にフォーカスをボタンに移動することができます – user944513

答えて

0

入力が集中しているときは入力を「ロック」し、5秒後には「設定解除」を使用する必要があります。素朴な実装は、次のようになります。https://jsfiddle.net/my7wk6gj/2/

更新:クリックすると擬似的にぼかしが防止されます。ぼかしはまだ発生しますが、5秒が経過するまでフォーカスが元の入力に戻されます。

var lockInput = false; 
var focusTarget = null; 
var lockTimeout = null; 

$('input').on('focus', function (e) { 
    if (lockTimeout) { 
    return; 
    } 

    lockInput = true; 
    lockTimeout = setTimeout(function() { lockInput = false; lockTimeout = null }, 5000) 
}).on('keydown', function (e) { 
    if (e.keyCode === 9 && lockInput) { 
    e.preventDefault(); 
    return false; 
    } 
}).on('blur', function (e) { 
    console.log('blur') 
    if (lockInput && focusTarget === null) { 
    focusTarget = e.target; 
    setTimeout(function() { 
     focusTarget.focus(); 
     focusTarget = null; 
    }); 
    } 
}); 

グローバル変数

は一例に使用されている...私はぼかしのために働くこと event.stopImmediatePropagationを得ることができなかったので、これは次善の策ですが、私はそれに対してアドバイスをしたいです。

また、多数の入力がある場合は、すべてのリスナーを追加するのではなく、イベント委任を使用することをおすすめします。

+0

ITが正しくありません。ステップ:アプリケーションの変更時間を5秒から15秒まで実行します。 "abc"を使用し、タブのキーワード..を使用するボタンにフォーカスを移動するが、それは15秒前にそれに行くべきではない。入力フィールドにぼやけを防止する必要がある – user944513

+0

あなたの質問は、入力。コードは、あなたが求めたことを行います。おそらく、「ITが正しくありません」と返答するのではなく、適切な質問を書く時間を費やすでしょう... – Dogoku

+0

申し訳ありませんが、これは私の間違いです – user944513

関連する問題