【发布时间】:2010-10-06 06:03:49
【问题描述】:
我正在使用 Jquery valdiation plugin 在客户端验证表单。 我正在从 xml 文件中获取验证错误消息。
$("#"+form).validate({
errorLabelContainer: "#dialogError", //msg_error
wrapper: "li",
rules: {
txtInfringementID: {
required: true,
digits: true
},
txtLicenceNumber: {
required: true
},
txtDateOfOffence: {
date: true,
required: true
}
},
messages: {
txtInfringementID: {
required:this.errorMessage("InfringementID","Required"),
digits: "Inf Id must be numeric only"
},
txtDateOfOffence: {
required: "please enter date of offence",
date: "Date is not valid"
},
txtLicenceNumber:this.errorMessage("LicenceNumber", "Required"),
txtSurname: this.errorMessage("DebtorSurname", "Required")
}
)};
errorMessage函数如下。
this.errorMessage = function (Field, Rule) {
var message;
$.ajax({
type: "GET",
url: "../../../ErrorMessages.xml",
dataType: "xml",
success: function (xml) {
$(xml).find("*[Name='" + Field + "']").each(function () {
message = $(this).find(Rule).text();
});
}
});
return message; **//I am using a debugger here**
}
我使用的xml是
<?xml version="1.0" encoding="utf-8" ?>
<ErrorMessage>
<Field Name="InfringementID">
<Required>Infringement ID is required</Required>
<Digit>Infringement ID should be numeric only</Digit>
</Field>
<Field Name="LicenceNumber">
<Required>License Number is Mandatory</Required>
</Field>
<Field Name="DebtorSurname">
<Required>Debtor Surname is Mandatory</Required>
</Field>
</ErrorMessage>
但问题是,当我使用调试器时,我会从 xml 获取消息。如果我不使用调试器,我会收到默认消息“此字段是必需的”。我认为,问题是this.errorMessage() 是一个异步请求,这个请求需要一些时间才能完成。我尝试使用 setTimeout 函数 延迟一些时间。但我不知道把时间延迟放在哪里。欢迎任何思考过程。
我是这样设置超时的。
required:setTimeout(this.errorMessage("InfringementID","Required"),10000),
【问题讨论】:
标签: jquery xml validation asynchronous settimeout