2013-04-30 39 views
0

我有一個插件:JQuery的 - 從字符串調用方法內部插件

$.fn.formvalidator = function(method) { 

我稱之爲:

$('form').formvalidator(); 

我有一個發生在一個字符串數組的方法:

function execute(field, rules) { 
    for(i=0; i<rules.length; i++) { 
     window[rules[i]](field); 
    } 
} 

rules: 
array(
    'required', 
    'email' 
); 

嘗試使用字段參數執行數組中的每個字符串。我得到一個錯誤:

Unhandled Error: 'window[rules[i]]' is not a function 

我環顧四周,我想既然我是一個函數聲明formvalidator我不能用的窗口,我已經試過裏面:

$.fn.formvalidator[rules[i]](field); 
fn.formvalidator[rules[i]](field); 
formvalidator[rules[i]](field); 

但同樣的錯誤。不知道如何執行這個字符串數組作爲方法。

UPDATE:澄清

$( '形式')formvalidator();調用對錶單中所有輸入進行迭代的插件。每個輸入元素具有屬性數據FV =「需要|電子郵件|其他|例如:」我與搶:

var attributes = $(this).data('fv'); 

有一次,我得到這些屬性我分裂他們一個「|」進入規則數組。現在,每個字段輸入我想打電話給這些字符串:

window[rules[i]](field); // if rules[0] = 'required' it calls the method below 

function required(field) { 
    ... 
} 

的$( '形式')formvalidator()。與我試圖完成的事情無關,只是補充說明如何激活插件。

回答

0

窗口是全局對象和您聲明formValidator jQuery對象裏(也稱爲「$」),所以你必須調用它以這種方式:

$("form")[rules[i]](field); 

或可能:

$("form").formValidator(rules[i], field); 

因爲我不知道formValidator實際上做了什麼,所以我無法弄清它,它接受函數或字符串以及它對它們做了什麼?

+0

你很困惑,我的錯誤。請在一秒鐘內看到我的更新。基本上每個輸入方法都可以指定驗證器插件讀取和驗證的規則。所以你可以去然後插件會讀取它並確保它的值至少爲6. – user2233440 2013-04-30 16:37:07

+0

@ user2233440你試過了'規則[我](領域)'沒有前綴'窗口'?不要忘記那不應該工作 – Hoffmann 2013-04-30 16:47:44

+0

你的函數應該定義在JavaScript文件的頂層(因爲它們不能在另一個函數中,除非你聲明它們是window.required = function(){}) – Hoffmann 2013-04-30 16:50:46