4

注:この質問は、CSS を使用してテキスト選択の強調表示を無効にする方法とは異なります。

質問する前に、上記の質問のディスカッション履歴を読みました。CTRL+A入力要素内でのみ機能する (すべて選択)を許可できることを除いて、すべて正常に機能します。

これは、HTML5 アプリをデスクトップにデプロイしていて、GUI/フォーム アプリケーションから同じ動作をしたいからです。

出発点は何でしょうか?すべての要素をイベントにバインドし、keypressCTRL + A を観察してみてくださいkeyCode。このアプローチの欠点は、すべてを制御し、再レンダリングに注意する必要があることです。

私は CSS ソリューションを好みますが、どんなアイデアでも大歓迎です。

前もって感謝します。

@EDIT:この厄介な解決策を見つけましたが、機能しています:

$(document).keydown(function(objEvent) {
    if (objEvent.ctrlKey) {
        if ((objEvent.keyCode === 65) || (objEvent.keyCode == 97)) {
            if ($(objEvent.target).not("input").disableTextSelect().length) {
                return false;
            }
        }
    }
});
4

2 に答える 2

5

重複の可能性があります。

jquery の使用が許可されている場合は、探している答えがここにあります。

65 は 'A' の ASCII で、両方を説明したい場合は 97 が 'a' です。

$(function(){   
    $(document).keydown(function(objEvent) {

            if (objEvent.ctrlKey) {
                if ($(objEvent.target).not('input')){
                    if (objEvent.keyCode == 65 || objEvent.keyCode == 97) {                         
                        objEvent.preventDefault();
                    }
                }
            }        
    });
});   

編集: 入力できるようにコメントに基づいて変更されました。

編集 2: jQuery UI を含める場合は、disableTextSelect() の代わりに disableSelection() を使用できます。それ以外の場合は、これを試してください。

編集 3: 申し訳ありませんが、disableSelection() は jQuery 1.9 では非推奨です。こちらを参照してください。. disableSelection() の代わりに、この単純なハックを試してください。objEvent.disableTextSelect();上に置き換え objEvent.preventDefault();ます。

編集4:少しきれいにしました。

于 2013-05-23T23:42:21.990 に答える
-1
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;

上記の CSS プロパティを使用して、その動作を停止します。

于 2013-05-23T23:37:08.400 に答える