Jquery选择器用于查找没有特定类的所有输入

时间:2021-08-13 21:18:23

I need to make a jQuery selector to find all inputs that don't have the class "clear" to make their values uppercase.

我需要创建一个jQuery选择器来查找没有类“clear”的所有输入,使其值大写。

Currently I have this code:

目前我有这个代码:

$("form").submit(function () {
    $("input[type=text]").val(function () {
        if (!$(this).hasClass("clear")) {
            return this.value.toUpperCase();
        } else {
            return this.value;
        }
    });

    $("input[type=text].lower").val(function () {
        return this.value.toLowerCase();
    });
});

This code is working well, but if I could make it using only the selector, I can skip the if/else code. I've searched for this selector, but without success.

这段代码运行良好,但如果我只使用选择器,我可以跳过if / else代码。我搜索过这个选择器,但没有成功。

Any idea?

任何想法?

Final Code

最终守则

My final code looks like this:

我的最终代码如下所示:

$("form").submit(function () {
    $("input[type=text]").not(".clear").not(".lower").val(function () {
        return this.value.toUpperCase();
    });

    $("input[type=text].lower").val(function () {
        return this.value.toLowerCase();
    });
});

Thanks for all replies.

感谢所有回复。

4 个解决方案

#1


4  

Use .not()

使用.not()

$("input[type=text]").not("YOUR_CLASS").val(function () {
        return this.value.toUpperCase();
    });

#2


6  

Use :not()

使用:不是()

$("input[type=text]:not(.clear)").val(function () {
    return this.value.toUpperCase();
});

#3


2  

Take the original selector and then keep your condition statements. Just do them both at once. Note that returning this.value is redundant so it is removed here.

选择原始选择器,然后保留条件语句。一下子做两件事。请注意,返回this.value是多余的,因此在此处将其删除。

$("input[type=text]").val(function () {
    var $t = $(this);
    if ( $t.hasClass("lower") ) return this.value.toLowerCase();
    if ( !$t.hasClass("clear") ) return this.value.toUpperCase();
});

#4


1  

You can use the jQuery pseudo-selector :not -

你可以使用jQuery伪选择器:不 -

$("input[type=text]:not(.clear)")

Here is some documentation on it

这里有一些文档

EDIT: Use the .not() function instead of :not when you can - it performs better

编辑:使用.not()函数而不是:当你可以时 - 它表现更好

#1


4  

Use .not()

使用.not()

$("input[type=text]").not("YOUR_CLASS").val(function () {
        return this.value.toUpperCase();
    });

#2


6  

Use :not()

使用:不是()

$("input[type=text]:not(.clear)").val(function () {
    return this.value.toUpperCase();
});

#3


2  

Take the original selector and then keep your condition statements. Just do them both at once. Note that returning this.value is redundant so it is removed here.

选择原始选择器,然后保留条件语句。一下子做两件事。请注意,返回this.value是多余的,因此在此处将其删除。

$("input[type=text]").val(function () {
    var $t = $(this);
    if ( $t.hasClass("lower") ) return this.value.toLowerCase();
    if ( !$t.hasClass("clear") ) return this.value.toUpperCase();
});

#4


1  

You can use the jQuery pseudo-selector :not -

你可以使用jQuery伪选择器:不 -

$("input[type=text]:not(.clear)")

Here is some documentation on it

这里有一些文档

EDIT: Use the .not() function instead of :not when you can - it performs better

编辑:使用.not()函数而不是:当你可以时 - 它表现更好