1

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

目前我有这个代码:

$("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();
    });
});

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

任何的想法?

最终代码

我的最终代码如下所示:

$("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();
    });
});

感谢所有回复。

4

4 回答 4

6

使用:not()

$("input[type=text]:not(.clear)").val(function () {
    return this.value.toUpperCase();
});
于 2013-09-23T17:13:59.007 回答
4

使用.not()

$("input[type=text]").not("YOUR_CLASS").val(function () {
        return this.value.toUpperCase();
    });
于 2013-09-23T17:14:59.327 回答
2

采用原始选择器,然后保留您的条件语句。只需同时执行它们。请注意,返回 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();
});
于 2013-09-23T17:16:13.330 回答
1

您可以使用 jQuery 伪选择器:not-

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

是有关它的一些文档

编辑:尽可能使用 .not() 函数而不是 :not -它的性能更好

于 2013-09-23T17:16:37.740 回答