2016-04-05 10 views
0

FocusEventが入力ボックスの外でマウスクリックでトリガーされた場合、またはタブアウトされた場合に条件分岐を持つコードがあります。かなり面倒なJS-Legacyコードです。ここには修正プログラムを適用する時間しかありません。 FocusEventためFocusEventマウスまたはタブを使用してトリガーされた状態を把握する方法

ドク:Clickイベントとは異なりhttps://developer.mozilla.org/en/docs/Web/API/FocusEvent

のFocusEventは、トリガ・イベント中に押すボタンについての情報を持っていません。

どのように私はこの情報を得ることができますか? Googleを介して回避策が見つかっただけですが、このFocusEventにはボタンを押したまま受信する方法があるとは思えません。

答えて

1

FocusEventは、あなたがリンクしたドキュメントの実験技術としてはっきりと説明されています。だから、あなたが求めるものは将来追加されるかもしれません。しかし、今のところ、回避策を使用する以外に選択肢がないように見えます。

私がしようとするものを作っ:

var clickWhileFocused = false; 
 

 
$("#testInput").on("tabbedOut", function() { 
 
    console.log("tabbedOut"); 
 
}); 
 

 
$("#testInput").on("clickedOut", function() { 
 
    console.log("clickedOut"); 
 
}); 
 

 
$(document).on("mousedown", function (e) { 
 
    if($("#testInput").is(":focus") && e.target.id != "testInput") { 
 
    $("#testInput").trigger("clickedOut"); 
 
    clickWhileFocused = true; 
 
    } 
 
}); 
 

 
$("#testInput").on("focusout", function() { 
 
    if(!clickWhileFocused) { 
 
    $("#testInput").trigger("tabbedOut"); 
 
    } 
 
    
 
    clickWhileFocused = false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input type="text"/> 
 
<input id="testInput" type="text" placeholder="#testInput"/> 
 
<input type="text"/>

+0

あなたのアドバイスのために[OK]を感謝を。ところで、キー/ボタンイベントをグローバルにログする素晴らしいライブラリが見つかりましたので、コード内のどこでもキーが押されたことをいつでも確認できます。 https://github.com/ten1seven/what-input – xetra11

+0

実際にタブキーを確認するのには素晴らしいかもしれません。私のコードでは、あなたがクリックして、他のすべての 'focusout'イベントがタブによってトリガされたと仮定しているかどうかを確認するだけです。 –

関連する問題