0

我创建了一个函数:

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)
    }, ...
4

1 回答 1

1

像这样更改您的代码:

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

现在reportValidator和其他变量是全局的并且在onDocumentReady回调函数之外是可见的。如果你把一个var变量放在本地,并且只能在onDocumentReady回调函数中使用。

于 2013-01-25T09:07:05.067 回答