2011-11-13 2 views
0

私はSVGでポイントをプロットするWebアプリケーションを持っています。キーを押して選択したポイントを削除する機能を追加します。私はを削除することができます keydown(またはそれ以上)のドキュメント全体のデフォルトのイベント(Chromeのデフォルト動作はページを戻すことです)をキャプチャすることができますが、これは明らかにすべての削除イベントをブロックするので削除ボタンはフォーム。フォームにフォーカスしていない場合は、削除キーをキャプチャしてください

の削除キーはフォーム/入力で意図したとおりに動作しますが、アプリ内の他の場所でカスタム削除機能として使用できるように設定する方法はありますか?

答えて

2

私の心に入って来た最初の事は、その後、preventDefaultdocumentでトリガーすべきではない、inputtextareaフィールド上stopPropagationにあります。

jQueryの疑似コード:

$('input, textarea').keypress(e, function(e){e.stopPropagation();}); 
$(document).keypress(e, function(e){if(delete) e.preventDefault();}); 

別のpossiblityは、チェック、文書のキーイベントでのorignalの目標です。

イベントコールバック:

var originalElement = e.srcElement || e.originalTarget; 
if(orignalElement.tagName === 'INPUT' or orignalElement.tagName === 'TEXTAREA'){ return; } 
// else do your delete key stuff 

あなたはjQueryのを使用している場合、それはあなたのためのイベントを正規化したので、最初の行は、時代遅れであるべきであり、あなたがoriginalTarget

2

マイれる好ましいを取得するためにe.targetを使用することができますアプローチは、このようなものになるだろう:

$(window).keyup(function(e) { 
    if(e.keyCode == 46 && $("input:focus, textarea:focus").length == 0) { 
    e.preventDefault(); 
    alert("delete key pressed!"); 
    } 
}); 

しかし、私はあなたが戻ってボタンの動作をオーバーライドすることができるでしょうかはわからない - それはunlikようです虐待の可能性を考えれば、クロムはそれを許してしまうだろう。

関連する問題