2010-12-10 27 views
4

J'utilise ce javascript pour vider une entrée/zone de texte lorsqu'elle est focalisée.Exclure un élément avec un attribut spécifique des sélecteurs jQuery

$(document).ready(function() { 
    $('input[type="text"],textarea').not('[readonly="readonly"]').addClass("idleField"); 
    $('input[type="text"],textarea').focus(function() { 
     $(this).removeClass("idleField").addClass("focusField"); 
     if (this.value == this.defaultValue){ 
      this.value = ''; 
     } 
     if(this.value != this.defaultValue){ 
      this.select(); 
     } 
    }); 
    $('input[type="text"],textarea').blur(function() { 
     $(this).removeClass("focusField").addClass("idleField"); 
     if ($.trim(this.value) == ''){ 
      this.value = (this.defaultValue ? this.defaultValue : ''); 
     } 
    }); 
    }); 

Je cherche un moyen d'exclure les input champs, qui sont fixés par readonlyreadonly="readonly". Je sais que je devrais utiliser .not (je suppose), mais je ne peux pas comprendre comment.

Répondre

7

Si vous voulez que tous les éléments d'entrée qui sont inscriptibles (non en lecture seule), vous pouvez utiliser le sélecteur suivant:

$("input:not([readonly])") 

Le paramètre après :not est le sélecteur correspondant. [readonly] correspondra à n'importe quoi où readonly est défini. Notez que ce qui suit ne sera pas toujours travailler:

[readonly="readonly"] 

Comme vous pourriez avoir ces deux:

<input readonly type="text"> 
<input readonly="readonly" type="text"> 

Vous pouvez également utiliser la fonction « : entrée » pseudo-sélecteur au lieu de « entrée, textarea » . Voir la documentation here.