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()函数而不是:当你可以时 - 它表现更好