Предотвратить выделение текстовой таблицы - PullRequest
40 голосов
/ 23 августа 2009

У меня есть таблица, и я разрешаю пользователям «выбирать» несколько строк. Все это обрабатывается с использованием событий jQuery и некоторого CSS, чтобы визуально указать, что строка «выбрана». Когда пользователь нажимает клавишу Shift, можно выбрать несколько строк. Иногда это вызывает выделение текста. Есть ли способ предотвратить это?

Ответы [ 7 ]

72 голосов
/ 23 августа 2009

Для этого есть свойство CSS3.

#yourTable {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
32 голосов
/ 23 августа 2009

Если вы хотите контролировать, когда ваши пользователи могут выбирать или нет части вашего сайта, вы можете использовать этот маленький плагин jQuery .

jQuery.fn.extend({ 
        disableSelection : function() { 
                return this.each(function() { 
                        this.onselectstart = function() { return false; }; 
                        this.unselectable = "on"; 
                        jQuery(this).css('user-select', 'none'); 
                        jQuery(this).css('-o-user-select', 'none'); 
                        jQuery(this).css('-moz-user-select', 'none'); 
                        jQuery(this).css('-khtml-user-select', 'none'); 
                        jQuery(this).css('-webkit-user-select', 'none'); 
                }); 
        } 
}); 

и используйте его как:

// disable selection on #theDiv object
$('#theDiv').disableSelection(); 

В противном случае, вы можете просто использовать эти атрибуты CSS внутри вашего файла CSS как:

#theDiv
 {
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
13 голосов
/ 21 ноября 2010

Только одна заметка на ответ Клитона выше - пример кода, кажется, работает хорошо, но для того, чтобы быть хорошим гражданином в мире jQuery, вы должны вернуть объект jQuery в конце функции, чтобы он был цепным - простое дополнение в одну строку исправляет это:

jQuery.fn.extend({
    disableSelection : function() {
            this.each(function() {
                    this.onselectstart = function() { return false; };
                    this.unselectable = "on";
                    jQuery(this).css('-moz-user-select', 'none');
            });
            return this;
    }
});

Ура, надеюсь, это полезно.

3 голосов
/ 24 августа 2009

Я просто удаляю выделение, сделанное с помощью клавиши Shift. Это может показать небольшое мерцание, хотя

if (event.shiftKey) {
    window.getSelection().removeAllRanges()
}
1 голос
/ 05 ноября 2011

Если на ваших страницах есть пользовательский интерфейс Jquery, просто используйте

    $("element-selector").disableSelection();
1 голос
/ 23 августа 2009

Вы можете попробовать с помощью функции focus () выделенного текста - выбор исчезнет.

$('#someEl').focus();
0 голосов
/ 30 мая 2015
::-moz-selection { /* Code for Firefox */  
    color: black;  
    background: none;
}

::selection {  
    color: black;  
    background: none;  
}  

от http://www.w3schools.com/cssref/sel_selection.asp
фактически из раздела try-it, после изменения значений.
заметьте, что курсор все еще имеет форму «я» ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...