0

我正在尝试使用以下类访问所有输入:

validate['number']

当然,有时其中一些是:

validate['required', 'number']

所以我需要number那里的一切。这是制作这些类的 Chronoform 系统的一部分。

我已经尝试过了,想如果它有效,我会从那里开始,让它适用于所有拥有的requiredalpha.

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 文档:

要使用任何元字符(例如 !"#$%&'()*+,./:;<=>?@[]^`{|}~ )作为名称的文字部分,它必须用两个反斜杠转义:\。例​​如,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 回答