0

我有一个插件:

$.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

我环顾四周,我想因为我在一个函数声明表单验证器中,所以我不能使用窗口,所以我尝试了:

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

但同样的错误。不确定如何将此字符串数组作为方法执行。

更新:澄清

$('form').formvalidator(); 调用迭代表单中所有输入的插件。每个输入元素都有一个属性 data-fv="required|email|other|example" 我用它来抓取:

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

一旦我得到这些属性,我就用“|”将它们分开 进入规则数组。现在对于每个字段输入,我想调用这些字符串:

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

function required(field) {
    ...
}

$('form').formvalidator(); 与我要完成的工作无关,只是添加以显示插件的激活方式。

4

1 回答 1

0

window 是全局对象,您在 jQuery 对象(也称为“$”)中声明 formValidator,因此您必须以这种方式调用它:

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

或者可能:

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

我无法弄清楚,因为我不知道 formValidator 实际上做了什么,它接受函数或字符串以及它对它们做了什么?

于 2013-04-30T16:31:43.407 回答