Ich habe ein Formular, auf dem ich jquery.validate verwende. Ich rufe zunächst validieren mit einer Reihe von Regeln und benutzerdefinierten Nachrichten auf ...
$("#formName").validate( {
rules: {
myExistingInput: {
required: true
}
},
messages: {
myExistingInput: {
required: "Enter something"
}
},
ignore: null, // include hidden fields (see below)
submitHandler: function(form) {
// do stuff
},
invalidHandler: function(event, validator) {
// do stuff (some of the fields may have been hidden by a collapsible panel
// if there is an error on one of those fields, expand the panel so the error
// becomes visible)
}
});
Später füge ich dem Formular dynamisch Felder hinzu und füge auch Regeln für diese Felder hinzu ...
$("#formName").append(...);
$("#newInputName").rules("add", {
required: true,
messages: {
required: "Enter something else"
}
});
Wenn ich das Formular dann absende, erhalte ich eine Fehlermeldung aus jquery.validate ...
Beim Überprüfen des Elements newInputName ist eine Ausnahme aufgetreten. Überprüfen Sie die 'messages' method.TypeError: Die Eigenschaft 'call' von .__ kann nicht abgerufen werden. undefinierte oder Nullreferenz
Beim Debuggen im Browser kann ich sehen, dass der Fehler innerhalb der Funktion "check" ausgelöst wird und dass die Variable "method" auf "messages" gesetzt ist.
Wenn ich die Nachrichten aus dem Aufruf zu Regeln entferne ("Hinzufügen", ...
$("#newInputName").rules("add", {
required: true
});
es funktioniert wie erwartet, aber offensichtlich habe ich jetzt keine benutzerdefinierten Fehlermeldungen.
Ich habe hier auf SO viele Beispiele gesehen, die zeigen, dass meine Syntax korrekt ist. Irgendwelche Vorschläge?
BTW: jQuery Validation Plugin - v1.11.0 - 2/4/2013
Ihr Code scheint fehlerfrei zu funktionieren, wie Sie ihn gepostet haben.
DEMO mit DOM bereit: http://jsfiddle.net/UZTnE/
DEMO mit PageInit & jQuery Mobile: http://jsfiddle.net/xJ3E2/
$(document).on("pageinit", function () {
$('#myform').validate({ // initialize the plugin
rules: {
field1: {
required: true
}
},
messages: {
field1: {
required: "Enter something"
}
}
});
$('[name*="field"]').each(function () {
$(this).rules('add', {
required: true,
messages: {
required: "Enter something else"
}
});
});
});
HTML:
<form id="myform">
<input type="text" name="field1" />
<input type="text" name="field2" />
<input type="submit" />
</form>
&UUML;BRIGENS:
diese...
ignore: null, // include hidden fields
sollte sein...
ignore: [], // include hidden fields
Siehe: jQuery Validate - Validierung für ausgeblendete Felder aktivieren
$(document).ready(function(){
$("#controlId").rules("add", {
required : true,
messages : { required : 'field is required.' }
});
});