JQuery-从插件内的字符串调用方法

JQuery-从插件内的字符串调用方法,jquery,jquery-plugins,polymorphism,Jquery,Jquery Plugins,Polymorphism,我有一个插件: $.fn.formvalidator = function(method) { 我称之为: $('form').formvalidator(); 我有一个接受字符串数组的方法: function execute(field, rules) { for(i=0; i<rules.length; i++) { window[rules[i]](field); } } rules: array( 'required', 'em

我有一个插件:

$.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'
);
我环顾四周,我认为由于我在一个函数声明formvalidator中,我无法使用窗口,所以我尝试了:

$.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();与我试图实现的目标无关,只是添加了它以显示插件是如何激活的

窗口是全局对象,您在jQuery对象(也称为“$”)内声明formValidator,因此必须以以下方式调用它:

$("form")[rules[i]](field);
或者可能:

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

我不知道formValidator到底做什么,它接受函数或字符串,以及它对它们做了什么?你很困惑,我错了。请稍后查看我的更新。基本上,每个输入方法都可以指定验证器插件读取和验证的规则。所以你可以这样做,然后插件将读取它,并确保它的值至少为6。@user2233440你有没有尝试过不加前缀“window”的“rules[i](field)”呢?没有不应该工作的nevermind你的函数应该在javascript文件的顶层定义(比如,除非你将它们声明为window.required=function(){}),否则它们不能在另一个函数中。但是我不能这样做,因为这是一个JQuery插件?我需要把它全部打包成一个。
$("form").formValidator(rules[i], field);