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 回答