いくつかの特別な処理を行うために、ダブルキープレス(たとえばChar Tの場合)をトラップできるようにしたいと考えています。キープレスは、2つの別個のプレスとして解釈されないように十分速くダブルクリックのように。 どのように私はこれを達成することができますか?javascriptでダブルキープレスをトラップする方法は?
答えて
キーがヒットしたら、時間をメモしてください。その後、あなたがキーがヒットした時にと最後にと書いた時間と比較してください。
差がしきい値内にある場合は、それを2倍と見なしてください。さもなければ、そうしないでください。ラフ例:
var delta = 500;
var lastKeypressTime = 0;
function KeyHandler(event)
{
if (String.fromCharCode(event.charCode).toUpperCase()) == 'T')
{
var thisKeypressTime = new Date();
if (thisKeypressTime - lastKeypressTime <= delta)
{
doDoubleKeypress();
// optional - if we'd rather not detect a triple-press
// as a second double-press, reset the timestamp
thisKeypressTime = 0;
}
lastKeypressTime = thisKeypressTime;
}
}
がキープレスイベントが発生したときにtrueに設定し、変数(おそらくfirst_press
)を持っており、設定時間後にfalseに変数をリセットしますタイマーを起動し(ただし、高速あなたが欲しいですキーを押す)。
あなたのkeypressイベントでは、その変数が真であれば、ダブル・プレスがあります。
例:
var first_press = false;
function key_press() {
if(first_press) {
// they have already clicked once, we have a double
do_double_press();
first_press = false;
} else {
// this is their first key press
first_press = true;
// if they don't click again in half a second, reset
window.setTimeout(function() { first_press = false; }, 500);
}
}
そして、ユーザーが変更できる設定可能な永続的な値として「半秒」を設定することができます。ユーザビリティのルール! – montrealist
-1これは*押された*キーごとに機能します。 –
私は彼のためのドロップインソリューションを提供しようとしていませんでした。彼に一般的な考えを示すだけです。 –
- 1. javascriptでwebsocket 503 max connectionsをトラップする方法はありますか?
- 2. 認証でエラーをトラップする方法はありますか?
- 3. WordでDrag/Dropイベントをトラップする方法は?
- 4. sun.net.ftp.FtpClientでftpの成功/失敗をトラップする方法は?
- 5. Androidサービスクラスでキーボードイベントをトラップする方法は?
- 6. java netbeansで空のjtableをトラップする方法は?
- 7. jQueryを使用してバックスペースキーをトラップする方法は?
- 8. Ruby TracePoint:特定のクラスの定義をトラップする方法は?
- 9. ダブルキープレスas3でヒーローをアニメ化するFlash Pro CS6
- 10. Selenium 2 Pythonでポップアップをトラップする方法
- 11. PowerShellで未処理のエラーをトラップする方法
- 12. Rubyプロセスで信号をトラップする方法
- 13. Bashスクリプトで終了コードをトラップする方法
- 14. iOSウェブブラウザでURLをトラップする方法8.1x
- 15. .NET(Excelアドイン)でOutOfMemoryExceptionをトラップする方法
- 16. バックグラウンドプロセスでSIGINTをトラップする
- 17. Pythonでエラーをトラップする
- 18. Pythonでシャットダウンイベントをトラップする
- 19. 異なるIPにSNMPトラップを送信する方法
- 20. inputdlg()でユーザをトラップするには
- 21. ブラウザでDOMを構築する方法(IEまたはFF)、またはJavaScriptがオブジェクト階層をトラップする方法
- 22. トラップを送信する前にSNMP4Jライブラリのピアアドレスを設定する方法は?
- 23. ポップアップコントロールからキーボード入力をトラップする方法
- 24. ココアのグローバルkeydown/keyupイベントをトラップする方法
- 25. 正常にCTRL-Zをトラップできますが、SIGTSTPはトラップできません。
- 26. パラメータ化クエリでMDXエラーをトラップするより良い方法を探す
- 27. __try __exceptできない場合にC++でエラーをトラップする方法
- 28. ウィンドウの最小化イベントをトラップする方法はありますか?
- 29. サウンドファイルのロードイベントの完了をトラップする方法はありますか?
- 30. JNIから呼び出されたコードでSystem.exit()をトラップする方法
このソリューションは、Ctrlキーを使用しています。彼は彼がそれを必要としているとは言わない(私には意味があるが)。 –
** @ Josh Stodola:** HA!どのように私が読んで慎重に表示... "チャーT"を見た、 "Ctrl T"を読む...おっと! – Shog9
ありがとうございました! – ak3nat0n