コード:
(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
、マウスのクリックと選択を監視することまで、すべてを試しました。とにかく、誰かが助けることができれば、私はそれを大いに感謝します.