I am using Jquery valdiation plugin for validating the form at client side. I am fetching validation error messages from an xml file.
$("#"+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 function is below.
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**
}
and the xml I am using is
<?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>
But the problem is that when I use debugger, I am getting messages from xml. If I don't use debugger, I am getting default message 'this field is required'. I think, the issue is this.errorMessage()
is a asynchrounous request and this request is taking some time to complete. I tried to put some delay using setTimeout function. but I don't know where to put the time delay. Any thought process is welcomed.
I am setting timeout like this.
required:setTimeout(this.errorMessage("InfringementID","Required"),10000),