2016-10-01 12 views
3

現在、Webアプリケーションを開発中で、問題が発生しています。 あなたが知っているかどうかは分かりませんが、クロムにはCTRL + Zを押して「やり直し」をしたときに<input>(特にテキスト入力)に「取り消し」機能があり、Ctrl + Yで「やり直し」する機能があります。しかし、現在私はそれらのキーボードショートカット(CTRL + Z & CTRL + Y)を使用する画像エディタを作っています。Chromeのテキスト入力を元に戻す/やり直しを無効にする(Ctrl + Z/Ctrl + Y)

私のアプリにもテキスト入力があるので、テキスト入力の内容を変更してCtrl + Zキーを押して画像エディタで変更を取り消すと、代わりにテキストエディタの変更が取り消されます。ここ

は効果を発揮
Codepenです(命令がCodepenである)

だから、結論で、私はそれを行うことができますどのようにクロムにアンドゥ/リドゥ機能を削除したいですか?

答えて

0

var ctrlDown = false; 
 
var ctrlKey = 17, vKey = 86, cKey = 67, zKey = 90; 
 

 
document.body.onkeydown = function(e) { 
 
    if (e.keyCode == 17 || e.keyCode == 91) { 
 
    ctrlDown = true; 
 
    } 
 
    if ((ctrlDown && e.keyCode == zKey) || (ctrlDown && e.keyCode == vKey) || (ctrlDown && e.keyCode == cKey)) { 
 
    e.preventDefault(); 
 
    return false; 
 
    } 
 
} 
 
document.body.onkeyup = function(e) { 
 
    if (e.keyCode == 17 || e.keyCode == 91) { 
 
    ctrlDown = false; 
 
    }; 
 
};
<body> 
 
    <input type='text' value='test' /> 
 
</body>

この仕事をしていますか?

盗まれたhere、見つかったのはhere @KadeHafenです。

+1

Ah!以前は 'e.preventDefault'を使っていましたが、それは私にとってはうまくいきません。なぜなら、' keypress'ではなく 'keydown'を使ったからですか? –

+0

@Bintang私は答えを変えてもうまくいかないと思うので、 'keypress'を使うのはおそらくあなたにとって問題だったと思います。 – StardustGogeta

1

あなたはonkeydownイベントを使用し、preventDefaultを使用できます。

document.onkeydown = function(e) { 
    if (e.ctrlKey && e.key === 'z') { 
    e.preventDefault(); 
    alert("CTRL + Z!"); 
    } 
} 
+1

はい、私はこれが好きで、IE11とChromeで動作します。 :)しかし、元に戻すことは、IE11とChromeの両方のコンテキストメニューでも利用できるので、これを無効にするには追加作業が必要になります:(私はこれをしました:\t \t \t if(e.ctrlKey && e.key === 'Z'){偽 \t \t \t \t戻り、 \t \t \t} – Zeek

関連する問題