2011-11-30 56 views
1

我注意到一些驗證工具使用「class」屬性將選項傳遞給驗證腳本。使用屬性類元素作爲數組

例子:

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

「必需」和「電子郵件」將由腳本設置選項有所回升。

我想知道是否有一個簡單的方法來實現這一點,或者這可能已經在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; 
} 

任何想法,爲什麼 「新的RegExp(類名+」[。?(*)] 「);」不工作。 var匹配是空白的。

編輯: 問題的第二部分移到: javascript regex pattern with a variable string not working

回答

2

如果我理解你正確,這是解決方案:

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 
    } 
} 
0

我只想用數據來做到這一點,而不是:

var mydata = {required:true,email:false}; $('。input-field')。data('validate',mydata);

看到一個例子:http://jsfiddle.net/MarkSchultheiss/FzaA8/