2011-06-30 9 views
2

私は特定の目的のオンラインスプレッドシートアプリケーションを作成しています。 。ユーザーがctr-zまたはctr-yを押すと、元に戻すか、テキストフィールドの最後の変更がやり直されます。彼らの方法はJavaScriptを使ってページ上の任意の場所で発生するctr-zとctr-yのキー入力イベントを効果的にハイジャックし、自分自身の機能を実行させます。または、標準のブラウザ機能を無効にするには、少なくとも。javascriptでctr-z(元に戻す)とctr-y(やり直し)をキャプチャしてカスタム機能を実行する

これは、firefoxとchromeの最近のバージョンをWindows上でのみ動作させる必要があります。

答えて

0

あなたのページに隠れたテキストエリアを置くことができます。これは、テキストエリアにフォーカスを設定し、このテキストエリアのキーボードイベントをバインドし、イベントがkeydownでキーがzまたはyであり、modifyerがctrl - その後、REDO/UNDOアクションを呼び出します。 jQueryのを使用して

+0

修飾子がctrlであるかどうかを確認するにはどうすればよいですか。 – James

+0

http://www.w3schools.com/jsref/event_ctrlkey.asp isKeyPressed機能(イベント) { (event.ctrlKey == 1)場合{// "CTRLキーが押されました!" } ... – zmila

2

:これは、すべてのキーボードベースのイベントを処理する必要があり

$(document).keydown(function (keyEvent) { 
    var keyCode = keyEvent.keyCode; 
    if (keyEvent.metaKey === true || keyEvent.ctrlKey === true) { 
     if (keyCode === 89) { 
     //fire your custom redo logic 
     keyEvent.preventDefault(); 
     return false; 
     } 
     else if (keyCode === 90) { 
     //special case (CTRL-SHIFT-Z) does a redo (on a mac for example) 
     if (keyEvent.shiftKey === true) { 
      //fire your custom redo logic 
     } 
     else { 
      //fire your custom undo logic 
     } 
     keyEvent.preventDefault(); 
     return false; 
     } 
    } 
}); 

。ユーザーがメニューバーで取り消しをクリックしたり、右クリックして取り消しを選択すると、何が起こるかは処理されません。

+0

あなたのスクリプトは機能しています! –

関連する問題