40 votes

Empêcher la surbrillance du tableau de texte

J'ai une table et j'autorise les utilisateurs à "sélectionner" plusieurs lignes. Tout cela est géré à l'aide d'événements jQuery et de certains CSS pour indiquer visuellement que la ligne est 'sélectionnée'. Lorsque l'utilisateur appuie sur Maj, il est possible de sélectionner plusieurs lignes. Parfois, ce texte est mis en évidence. Est-il un moyen d'empêcher cela?

72voto

Eli Grey Points 17553

Il existe une propriété CSS3 pour cela.

 #yourTable {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: moz-none;
    -ms-user-select: none;
    user-select: none;
}
 

32voto

Cleiton Points 4203

Simplement, écrire quelque chose comme:

var domNode = $('#theDiv');
if (jQuery.browser.msie) {
   domNode.get(0).onselectstart = function () { return false; };
} else
{
    domNode.get(0).onmousedown = function(e){e.preventDefault()}
}


EDIT:

En cherchant sur internet, j'ai trouvé un blog avec un grand ideia, voir: http://aleembawany.com/2009/01/20/disable-selction-on-menu-items-with-this-jquery-extension/

Ainsi, vous pouvez insérer dans votre fichier js:

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'); 
                }); 
        } 
}); 

et l'utiliser à la place:

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

13voto

Steven Points 228

Juste une remarque sur la réponse de Cleiton ci-dessus - l'exemple de code semble bien fonctionner, mais pour être un bon citoyen du monde jQuery, vous devez renvoyer l'objet jQuery à la fin de la fonction afin qu'il soit chaînable - un simple L'addition d'une ligne corrige cela:

 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;
    }
});
 

À la vôtre, espérons que cela vous sera utile.

3voto

ckuijjer Points 121

Je supprime simplement la sélection effectuée à l'aide de la touche Maj. Cela pourrait montrer un petit scintillement si

 if (event.shiftKey) {
    window.getSelection().removeAllRanges()
}
 

1voto

bogonko Points 2074

Si vous avez une interface utilisateur Jquery sur vos pages, utilisez simplement

     $("element-selector").disableSelection();
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X