2

コード:

(function($){
    $.fn.ctrl = function(key, callback) {
    if(typeof key != 'object') key = [key];
    callback = callback || function(){ return false; }
    return $(this).keydown(function(e) {
        var ret = true;
        $.each(key,function(i,k){
            if(e.keyCode == k.toUpperCase().charCodeAt(0) && e.ctrlKey) {
                ret = callback(e);
            }
        });
        return ret;
    });
};


$.fn.disableSelection = function() {
    $(window).ctrl(['a','s','c']);
    return this.each(function() {           
        $(this).attr('unselectable', 'on')
               .css({'-moz-user-select':'none',
                    '-o-user-select':'none',
                    '-khtml-user-select':'none',
                    '-webkit-user-select':'none',
                    '-ms-user-select':'none',
                    'user-select':'none'})
               .each(function() {
                    $(this).attr('unselectable','on')
                    .bind('selectstart',function(){ return false; });
               });
    });
};

})(jQuery);

$(document).ready(function(){
    $("textarea").on('focus',function(){
        $(this).disableSelection();
    });
});

フィドル: http://jsfiddle.net/EBhya/8/

その背後にある考え方は、ユーザーは入力できますが、テキストを強調表示できないということです。変更などは、矢印キーなどで行うことができます。

Firefox と IE では、これは100%希望どおりに機能します。

Chrome では、おそらく Safari では、集中すると入力が無効になり、入力することさえできなくなります。

無効な選択を適用するまで待つことからkeydown、マウスのクリックと選択を監視することまで、すべてを試しました。とにかく、誰かが助けることができれば、私はそれを大いに感謝します.

4

1 に答える 1

2

bfavaretto が示唆したように、これでうまくいきます: https://stackoverflow.com/a/4656495/825789

于 2013-03-20T20:57:04.000 に答える