验证函数未定义

时间:2013-01-25 08:50:34

标签: javascript validation

我创建了一个函数:

function createValidatorForForm(id) {
    var formValidator = $(id).validate({
        errorClass:'help-inline',
        errorElement:'p',

        highlight:function (element, errorClass, validClass) {
            $(element.parentNode.parentNode).addClass('error')
        },
        unhighlight:function (element, errorClass, validClass) {
            $(element.parentNode.parentNode).removeClass('error')
        }
    });
    return formValidator;}

然后我以下一种方式在我的代码中使用它:

var reportValidator = createValidatorForForm("#report-form");
var areaValidator = createValidatorForForm("#area-form");
var liquidationValidator = createValidatorForForm("#liquidation-form");
var comparableValidator = createValidatorForForm("#comparable-form");

但是虽然Firebug知道formValidator并且我可以在调试器中看到它的状态,但他警告我reportValidator和另外三个变量是未定义的,我不能在我的代码中使用它们:reportValidator.form()生成错误。但验证本身适用于所有形式。

function saveReport() {
if (!comparableValidator.form()){return};
$.ajax({
    url : SAVE_REPORT, // + "?json=" + ko.toJSON(reportModel),
    data : {
        json : ko.toJSON(reportModel)
    }, ...

1 个答案:

答案 0 :(得分:1)

更改您的代码:

   reportValidator = createValidatorForForm("#report-form");
   areaValidator = createValidatorForForm("#area-form");
   liquidationValidator = createValidatorForForm("#liquidation-form");
   comparableValidator = createValidatorForForm("#comparable-form");    

现在reportValidator和其他变量是全局的,并且在onDocumentReady回调函数之外可见。如果你放置一个var,那么你只能在onDocumentReady回调函数中使变量成为局部变量。