我创建了一个函数:
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)
}, ...
答案 0 :(得分:1)
更改您的代码:
reportValidator = createValidatorForForm("#report-form");
areaValidator = createValidatorForForm("#area-form");
liquidationValidator = createValidatorForForm("#liquidation-form");
comparableValidator = createValidatorForForm("#comparable-form");
现在reportValidator
和其他变量是全局的,并且在onDocumentReady
回调函数之外可见。如果你放置一个var
,那么你只能在onDocumentReady
回调函数中使变量成为局部变量。