2016-06-07 11 views
0

Ich habe eine andere Methode zu einem jQuery.validator hinzugefügt, um ein Datum zu validieren, aber es scheint nicht ausgeführt zu werden (selbst die Warnung wird nicht angezeigt), wenn die Webseite aktualisiert wird. Hinweis: Die Methode "oneOfGroup" wird korrekt ausgeführt.jQuery Validate Not Firing-Methode

$.validator.addMethod("validDate", 
function(value, element) { alert("Here"); 
// Validate date 
return value.match(/^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/); 
}, 
"Please enter a date in the format dd/mm/yyyy."); 

$.validator.addMethod("oneOfGroup", 
function(value, element) { 
var result = (($("input[name$='txtDateOfBirth']").val().length > 0) || ($("input[name$='txtCBHRef']").val().length > 0) || ($("input[name$='txtCardNumber']").val().length > 0) || ($("input[name$='txtNationalInsuranceNumber']").val().length > 0)); //TA 
return result; 
}, 
"At Least One Required"); 

function customValidate() { 
$("#serverForm").validate(
{ 
rules: { 
<%=txtFirstName.UniqueID %>: { required: true } 
, 
<%=txtSurname.UniqueID %>: { required: true } 
, 
<%=txtDateOfBirth.UniqueID %>: { date: true } 
, 
<%=txtDateOfBirth.UniqueID %>: { validDate: true } 
, 
<%=txtDateOfBirth.UniqueID %>: { oneOfGroup: true } //TA 
, 
<%=txtCBHRef.UniqueID %>: { oneOfGroup: true } 
, 
<%=txtCardNumber.UniqueID %>: { oneOfGroup: true } 
, 
<%=txtNationalInsuranceNumber.UniqueID %>: { oneOfGroup: true } 
}, 
messages: { 
<%=txtFirstName.UniqueID %>: { required: "Required Field" } 
, 
<%=txtSurname.UniqueID %>: { required: "Required Field" } 
, 
<%=txtDateOfBirth.UniqueID %>: { date: "Invalid Date" } 
, 
<%=txtDateOfBirth.UniqueID %>: { validDate: "Invalid Date" } 
, 
<%=txtDateOfBirth.UniqueID %>: { required: "Required Field" } //TA 
, 
<%=txtCBHRef.UniqueID %>: { required: "Required Field" } 
, 
<%=txtCardNumber.UniqueID %>: { required: "Required Field" } 
, 
<%=txtNationalInsuranceNumber.UniqueID %>: { required: "Required Field" } 
} 

});

Irgendwelche Ratschläge, um dieses Problem zu lösen?

+0

Weiter zu meiner Frage habe ich jetzt die AddMethod zu __ $. Validator.addMethod ("validDate", Funktion (Wert, Element) {alert ("Hier!"); Zurückgeben wahr;}) __ aber es ist wird immer noch nicht ausgeführt. Außerdem beachte ich, dass ich diese Methode auf Felder anwende, denen ein Datumsauswahlprogramm zugeordnet ist, also nicht sicher, ob dies Auswirkungen auf mein Problem hat. – Cooldudescrib

Antwort

0

Wo ich falsch gelaufen bin, war die Erstellung mehrerer Regeln für das gleiche Feld für jede Methode, anstatt einer einzigen Regel mit jeder der Methoden angewendet.

rules: { 
..... 
      <%=txtDateOfBirth.UniqueID %>: { oneOfGroup: true, validDate: true } 
..... 
}, 
Messages: { 
..... 
<%=txtDateOfBirth.UniqueID %>: { validDate: "Invalid Date/Format (dd/mm/yyyy)", required: "Required Field" } 
..... 
} 

Alle sortiert.