jQuery Validate - 如何在“required”内运行函数而不在加载时执行它

时间:2013-10-22 11:45:01

标签: javascript jquery jquery-validate

非常简单的例子,我在'required'中使用应该在实际表单验证上运行的函数,但它也会在页面加载时执行。

问题是如何避免它并且这样做只会在实际验证时调用其他函数。

$("form").validate({           
            rules : {
                testinput: {
                    required: runFunction('hello world')
                }
});

function runFunction(a){
    console.log(a);
}

3 个答案:

答案 0 :(得分:1)

您需要将函数调用包装在另一个函数中:

$("form").validate({           
    rules : {
        testinput: {
            required: function(el) {
                runFunction('hello world')
            }
        }
    });
});

原因是因为runFunction返回的值被设置为加载时required属性的值。使用上面的代码,您将为required属性分配一个函数,该函数仅在验证时运行。

答案 1 :(得分:1)

required callback中的呼叫功能,

$("form").validate({           
    rules : {
        testinput: {
             required: function(){ runFunction('hello world'); 
        }
    }
});

阅读required-method

答案 2 :(得分:1)

另一种方式是使用某种部分应用

请参阅:Partial Application - Eloquent Javascript

您的代码可能属于以下几行:

$("form").validate({           
    rules : {
        testinput: {
            required: partial(runFunction,'hello world')
        }
});

partial(runFunction,'hello world')创建一个与runFunction('hello world')等效的新函数。

这是一个来自函数式编程的强大概念,而JS可以扩展为支持这样的事情。

编辑:1可能是部分申请的更好解释

http://www.drdobbs.com/open-source/currying-and-partial-functions-in-javasc/231001821