我有一个插件:
$.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);
但同样的错误。不知道如何将这个字符串数组作为方法执行。
更新:澄清
。$( '形式')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();与我想要完成的任务无关,只是补充说明了如何激活插件。
答案 0 :(得分:0)
window是全局对象,你在jQuery对象中声明formValidator(也称为'$'),所以你必须以这种方式调用它:
$("form")[rules[i]](field);
或可能:
$("form").formValidator(rules[i], field);
我无法理解,因为我不知道formValidator实际上做了什么,它接受函数或字符串以及它对它们做了什么?