jquery validation add-Eingänge erforderlich, dynamisch
Ich bin derzeit mit dem bassistance jquery-validation oder die jqueryvalidation plugin(Sie nannte es) und ich habe es die Prüfung einer form etwa so:
if($.fn.validate) {
$("#frmNewOrder").validate({
rules: {
txtAmount: {
required: true,
digits: true
},
ddlAccount: {
required: true
},
ddlBank: {
required: true
}
}
});
}
Nun, je nach der Menge, die ich brauche, um zu verlangen oder nicht ein zusätzliches Feld mit einer dropdownlist und je nach dropdownlist einem anderen text-Eingabe. so ist es wie:
if($('#txtAmount').val() >= 10000){
//add ddlReason required
}
if($('#ddlReason').val() == 'o'){
//add txtReason required
}
Ich habe versucht, indem Sie die css-Klasse "notwendig" wie die anderen Felder, aber ich nehme Sie, wenn Sie nicht innerhalb der Regeln, dann funktioniert es nicht? Ich habe versucht, hinzufügen von Regeln wie dieser:
$( "#ddlReason" ).rules( "add", {
required: true});
und das funktioniert auch nicht. irgendwelche Vorschläge?
EDIT: Hier der link der jquery Validierung, die ich verwende. wenn ich Regeln außerhalb, es gibt diese Fehlermeldung:
Uncaught TypeError: Cannot read property 'settings' of undefined
on line 124:
var settings = $.data(element.form, 'validator').settings;
und über die Vorschläge, die ich gesehen habe, in anderen Orten habe ich dies getan, das ist, was den Fehler verursacht:
var defaultrules = {
txtAmount: {
required: true,
digits: true
}
}
if($.fn.validate) {
$("#frmNewOrder").validate();
addRules(defaultrules);
}
EDIT 2: hier ist das html-markup, hoffe es hilft.
<form id="frmNewOrder" name="frmNewOrder" action="" method="post">
<label>Amount</label>
<input type="text" name="txtAmount" id="txtAmount" class="required" />
<button id="calculate" type="button">Calculate</button>
<div id="dvreason" style="display:none;">
<select id="ddlReason" name="ddlReason">
<option></option>
<option value="i">Option 1</option>
<option value="o">Other</option>
</select>
<div id="dvother" style="display:none">
<label>Other reason</label>
<input type="text" name="txtOther" id="txtOther" />
</div>
</div>
<input type="submit" name="send" id="send" value="Send" />
</form>
- Können Sie nach ein paar HTML mit JS in Zusammenhang? Vielleicht steckte es in einen jsfiddle
- Ich habe eine harte Zeit hinzufügen der Validierung auf jsfiddle lol, wenn ich es herausfinden werde ich es posten
- Nein, natürlich können Sie
class="required"
oder.rules('add')
statt innerhalbrules
Erklärung in.validate()
. Es muss etwas anderes falsch mit Ihrem code. Genug code für den Bau eine funktionierende demo. Alle relevanten jQuery und HTML. - Ich habe gerade einige mehr code und einen link, der die Validierung der js-Datei, die ich verwende.
- Immer noch nicht genug sehen hier den code für die Neuerstellung Ihres Problems. Wo ist das HTML-markup?
- Habe ich nur noch die html-markup, und nur als persönliche Meinung, ich sehe es wirklich unfair niederstimmen meine Frage und Wunsch zu haben, es geschlossen zu sehen, wie ich eine Menge von Infos, die mehr als andere haben, wenn gefragt wird. Und ich immer alle meine Fragen gezeigt, alle meine Bemühungen und die meisten meiner code. Nicht mit dem Finger, weil ich nicht weiß, wer um Punkt auf, mussten aber lassen Sie es bekannt sein.
- Wenn Sie ein problem mit der jQuery Validierung, können Sie die debug-Eigenschaft auf true und sehen, ob man irgendwelche zusätzlichen Informationen. Ich erhielt die gleiche Fehlermeldung, aber mein Fehler war das anders, ich war nicht der Aufruf von "validate" - Methode auf die form sondern auf das modale Fenster. Nach dem ändern, dass es funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
vor ähnlichen Problem mit ihm,
in der Tat, was Sie bemerken ist, dass der validator ist nicht definiert in Zeile 124, d.h. es gibt keine Prüfinstanz im Zusammenhang mit der form
wenn Sie die validate-Methode Sie sehen, dass wenn der validator ist nicht definiert, es wird eine neue erstellen,
Offenbar die
rules
Methode wird davon ausgegangen, dass die Prüfung bereits in das Formular-Objekt, also von meinem Verständnis, und davalidate
gibt validator-Instanz, die Sie anrufen könnenvalidate
und dann hängen Sie Ihre extra-Regeln, um die zurückgegebenen validatorsettings.rules
Objekt-und re-run wieder, die ist nicht sehr praktisch.Die andere Lösung wäre, einfach fügen Sie die zusätzlichen Regeln für die erste-Regeln-Objekt vor dem Aufruf
validate
So, in meinem Fall wollte ich das Eingabefeld validiert werden soll, als Nummer jedoch habe ich nicht möchten, dass Google Chrome machen es zu einem Zahl-Feld (nur versuchen Sie in Chrome zu sehen, was ich meine,
dieser hatte das Problem zu umgehen, den Typ Anzahl Validierung Fall, dass der Benutzer manuell eingegeben, und in meinem Fall wird der Benutzer wahrscheinlich geben Sie die Nummer manuell)
code Beispiel:
Hoffe, das hilft
Würd ich bekommen die gleiche Fehlermeldung wie gut und erkannte, dass ich rufen soll, die
validate()
auf dem Formular zuerst, bevor ich den Anrufrules()
auf die einzelnen Eingabe-Felder. Dieses Verhalten ist dokumentiert.Dies kann nicht die Antwort auf OP ' s problem, aber ich bin dieses posting, jedem zu helfen, die nach
jquery validation Cannot read property settings of undefined
und klickte auf dieser Seite.Dank für den Hinweis gegeben durch @nsawaya!
Ihre ist ein problem, während sich die dynamische add-element mit der id so ist es die Arbeit, wenn Sie verwenden, Attribut-Selektor, so zum Beispiel Attribut hinzufügen
data="ddlReason"
und es so machen :