3

我正在尝试为页面上的所有字段创建一个通用的单击事件函数,该函数主要检查目标是否为空白或包含用户输入的值。但是,我希望这个通用函数检查是否存在更具体的函数,如果找到,则允许它处理目标值的验证。例子:

function genValueCheck(event) {
   var af = event.target.id+'_checkValue';
   if (typeof af == 'function') runFunction(af,[event]); // logic specific to this field
   else { 
      // logic for checking for blanks, etc which applies to all fields
   }
}

但是,在上面的示例中,typeof 返回 'string',因为它正在检查 typeof 'af',而不是 'af' 包含的内容,即函数的名称。

我正在尝试做的事情可能吗?

提前致谢。

4

2 回答 2

2

那是因为af 一个字符串。如果您的函数存在于全局范围内,请使用window[af]. 这应该适合你:

function genValueCheck(event) {
   var af = event.target.id+'_checkValue';
   if (typeof window[af] == 'function') runFunction(af,[event]); // logic specific to this field
   else { 
      // logic for checking for blanks, etc which applies to all fields
   }
}

演示

于 2012-08-26T15:02:59.287 回答
2

创建一个包含所有函数的对象,以免污染全局命名空间,然后使用括号表示法检索它:

var validators = {};
validators.checker1 = function() { ... };

function genValueCheck(event) {
    var af = event.target.id+'_checkValue';
    if (typeof validators[af] == 'function') {
        validators[af](event); // logic specific to this field
    } else { 
    // logic for checking for blanks, etc which applies to all fields
    }
}
于 2012-08-26T15:22:51.970 回答