1

我正在为我正在处理的项目滚动我自己的 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']();
                }
            }
        }
    }
4

2 回答 2

1

处理这个问题的最好方法是将你的函数声明为对象字面量的一部分。这样,您可以在插件中引用文字,如下所示:

(function( $ ) {
    var methods = {
        validateRequired: function(input)
        {
            // STUB
        }
    };

    $.fn.validateForm = function(options) {
        function findInputs() {

            if($.isFunction(methods['validateRequired'])) methods['validateRequired']();

        }
    };
});
于 2012-12-06T22:17:23.833 回答
0

我不是 JS 专家,但试试这个:

if(typeof (someFunction) == 'function') {
// do something
}

编辑

或者像这样,使用函数名作为字符串:

if(typeof this["functionName"] == "function") {
     this["functionName"](); //it exists, call it
 }

我在这里找到了这个:

javascript:如何判断一个函数名是否存在?/见尼克克雷弗的回答。

通过这样的谷歌搜索:“函数名存在 javascript”

如果您正在搜索有关 jQuery 的内容 - 尝试使用 javascript 关键字而不是 jQuery 进行搜索。jQuery 是一个用 javascript 编写的框架。

于 2012-12-06T21:55:40.340 回答