1

私が取り組んでいるプロジェクトのために、独自の jQuery フォームバリデーターを展開しています。入力要素の data-validate で必要な検証の種類を定義しています。

プラグインを呼び出す前に、この検証関数がプ​​ラグインに存在するかどうかを確認したい (すべてプラグイン自体内)。

私が使用する前に:

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 に関する何かを検索している場合は、jQuery の代わりに javascript キーワードで検索してみてください。jQuery は JavaScript で書かれたフレームワークです。

于 2012-12-06T21:55:40.340 に答える