使用属性类元素作为数组

using the attribute class element as an array

本文关键字:数组 元素 属性      更新时间:2023-09-26

我注意到一些验证工具使用"class"属性将选项传递给验证脚本。

的例子:

<input class="input-field validate[required, email]" name="" type="text" />

"required"answers"email"将被脚本拾取作为设置选项。

我想知道是否有一种简单的方法来实现这一点,或者这可能已经在jQuery中可用?我想用它来传递某些设置给我的脚本。

任何帮助将是感激的,由于

编辑:

谢谢@loseb你的例子工作得很好。我试图通过对您的示例做一些小修改来实现的另一件事:

function classAttributes( classString, className ) {
    var data;
    var regex = new RegExp(className+"'[(.*?)']");
    var matches = classString.match(regex);
    if ( matches ) {
        //matches[1] refers to options inside [] "required, email, ..."
            var spec = matches[1].split(/,'s*/);
            if ( spec.length > 0 ) {
                data = spec;
            }
    }
    return data;
}

知道为什么"new RegExp(className+"[(.*?)]");"不起作用吗?Var匹配为空

编辑:

问题的第二部分改为:

如果我理解正确的话,这就是解决方案:

var className = $('.input-field').att('class');
var regex = /validate'[(.*?)']/;
var matches = className.match(regex);
if (matches) {
    //matches[1] refers to "required, email" string
    var spec = matches[1].split(/,'s*/);
    if (spec.length == 2) {
        var attribute = spec[0]; //required or optional or anything else
        var validator = spec[1]; //actual validation type
    }
}

我将使用data来代替:

var mydata={required: true,email:false};$ (' .input-field ') . data("验证",mydata);

见下面的例子:http://jsfiddle.net/MarkSchultheiss/FzaA8/