从jQuery选择器中排除具有特定属性的元素

Sto*_*oic 5 javascript jquery css-selectors

我正在使用这个javascript在焦点时清空输入/ textarea.

   $(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 : '');
        }
    });
   });
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来排除那些通过input设置的字段.我知道我应该使用(我猜),但我无法弄清楚如何.readonlyreadonly="readonly".not

jth*_*son 8

如果您希望所有可写的输入元素(不是只读),您可以使用以下选择器:

$("input:not([readonly])")
Run Code Online (Sandbox Code Playgroud)

参数after :not是要匹配的选择器.[readonly]将匹配readonly设置的任何内容.请注意,以下内容并不总是有效:

[readonly="readonly"]
Run Code Online (Sandbox Code Playgroud)

正如你可以拥有这两个:

<input readonly type="text">
<input readonly="readonly" type="text">
Run Code Online (Sandbox Code Playgroud)

您也可以使用":input"伪造选择器而不是"input,textarea".请参阅此处的文档.