1

クラスが「クリア」されていないすべての入力を見つけて、値を大文字にするjQueryセレクターを作成する必要があります。

現在、私はこのコードを持っています:

$("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 に答える