我正在为我正在进行的项目推出自己的jQuery表单验证器。我正在定义输入元素的数据验证所需的验证类型。
我想在调用之前检查我的插件中是否存在此验证函数(所有这些都在插件本身内)。
在我使用之前:
if($.isFunction(window['functionName']))
window['functionName']();
然而,这似乎不适用于我的插件:
(function( $ ) {
$.fn.validateForm = function(options) {
...
findInputs();
function validateRequired(input) {
}
function findInputs() {
...
if($(this).attr("data-validate"))
{
// Get list of required validation functions
var toValidate = $(this).attr("data-validate").split(/\s+/);
for(var i = 0; i < toValidate.length; i++) {
// Hardcoded function name call for testing
if($.isFunction(window['validateRequired']))
window['validateRequired']();
}
}
}
}
答案 0 :(得分:1)
处理此问题的最佳方法是将函数声明为对象文字的一部分。这样,您可以在插件中引用文字,如下所示:
(function( $ ) {
var methods = {
validateRequired: function(input)
{
// STUB
}
};
$.fn.validateForm = function(options) {
function findInputs() {
if($.isFunction(methods['validateRequired'])) methods['validateRequired']();
}
};
});
答案 1 :(得分:0)
我不是JS专家,但试试这个:
if(typeof (someFunction) == 'function') {
// do something
}
修改
或者像这样,使用函数名作为字符串:
if(typeof this["functionName"] == "function") {
this["functionName"](); //it exists, call it
}
我在这里找到了这个:
javascript: how to judge a function name exists? /见尼克克拉弗回答。
通过谷歌搜索:“函数名称存在javascript”
如果您正在搜索有关jQuery的内容 - 请尝试使用javascript关键字而不是jQuery进行搜索。 jQuery是一个用javascript编写的框架。