0

次のクラスですべての入力にアクセスしようとしています:

validate['number']

もちろん、それらのいくつかは次のとおりです。

validate['required', 'number']

だから私はそこにあるすべてが必要numberです。これは、これらのクラスを作成する Chronoform システムの一部です。

私はこれを試してみましたが、それが機能する場合は、そこから行って、requiredまたはalpha.

jQuery(document).ready(function() {
  jQuery(".validate['number']").change(function() {
    if(this.value <= '') {
      this.value = '0';
    }
  });
});

しかし、行きません、それはそれらを見つけられません。では、このようなクラスとそのサブパーツを見つけるにはどうすればよいでしょうか? このようなクラスは見たことがないので、何と呼べばいいのかもわかりません。

4

2 に答える 2

2

特殊文字を含むクラス名には、を使用して直接アクセスすることはできません.classname

代わりに、次のセレクターを使用する必要があります。[class~="validate['number']"]

于 2013-02-01T02:02:12.323 に答える
0

特殊文字を適切にエスケープしてください。これを試して:

$(".validate\\[\\'required\\'\\]")

jQuery API ドキュメントから:

メタ文字 ( !"#$%&'()*+,./:;<=>?@[]^`{|}~ など) を名前のリテラル部分として使用するには、 2 つのバックスラッシュでエスケープする必要があります: \. たとえば、id="foo.bar" を持つ要素は、セレクター $("#foo\.bar") を使用できます。

セレクターのエスケープの詳細: http://api.jquery.com/category/selectors/

次のような疑似セレクターに対する jQuery のサポートを拡張することをお勧めします。

(function () {
    var rRequired = /\bvalidate\[[^\]]*\brequired\b[^\]]*\]/,
        rAlpha = /\bvalidate\[[^\]]*\balpha\b[^\]]*\]/,
        rNumber = /\bvalidate\[[^\]]*\bnumber\b[^\]]*\]/;

    $.extend($.expr[':'], {
        mandatory: function(elem) {
            return rRequired.test(elem.className)
        },

        number: function (elem) {
            return rNumber.test(elem.className)
        },

        alpha: function (elem) {
            return rAlpha.test(elem.className)
        }
    });
})();

次に、コードでより単純なセレクターを使用できます。

$('input:mandatory')
$('input:number')
$('input:alpha')

注: ":required" 疑似セレクターを作成しようとしましたが、何らかの理由で機能しません:mandatory

于 2013-02-01T02:13:01.870 に答える