Hinzufügen von jQuery bedingte Validierung dynamisch generierten HTML
-
07-07-2019 - |
Frage
Ich habe folgendes Szenario HTML:
<div>
<input id="txt0" type="text" /><input type="checkbox" id="chk0" /></div>
<div>
<input id="txt1" type="text" /><input type="checkbox" id="chk1" /></div>
<!-- etc -->
<div>
<input id="txtN" type="text" /><input type="checkbox" id="chkN" /></div>
Wenn Checkbox N aktiviert ist, dann Textbox N ist ein Pflichtfeld.
Ich habe gerade arbeitet mit einer (der?) jQuery Validierung gestartet Modul und ich versuche, herauszufinden, wie diese Validierung zu erreichen, die nur, dass etwas komplexer als die Beispiele scheint.
Konzeptionell ich glaube, ich möchte eine CSS-Klasse auf meine Kontrollkästchen hinzuzufügen, dann addClassRules
verwenden, um eine benutzerdefinierte Regel hinzuzufügen. Allerdings ist die Herausforderung, wie das entsprechende Textfeld für jede Option angeben.
Meine HTML erzeugt ASP.NET MVC, so konnte ich die JavaScript dynamisch generieren, die eine Regel für jede Option angeben würden, aber dies scheint ein wenig langatmig.
Lösung 2
Gelöst, mit dem folgenden Ansatz ...
Ich aktualisiert meine HTML eine bestimmte CSS-Klasse auf meine Textfelder (amount_text_box
) aufzunehmen, und verwendet, um die folgende jQuery:
$.validator.addClassRules("amount_text_box", { required: function(element) {
var chkId = element.id.replace(/txt/, "#chk");
return $(chkId)[0].checked;
}
Eine Einschränkung ist, dass dies nur Feuer, wenn der Fokus das Textfeld läßt - im Idealfall würde die Regel auch ausgelöst, wenn die Checkbox angeklickt wurde
.Andere Tipps
Ich habe eine ähnliche Sache, Richard getan. Obwohl ich stoppped der benutzerdefinierten Regel kurz. Mein Ansatz war es, die Klasse ‚erforderlich‘ an den Eingang Tag hinzuzufügen.
In Bezug auf Ihre Wähler, könnten Sie nicht Ihre Textbox haben und geben Sie „Share“ eine Klasse eindeutig zu ihnen sagen Class0 .. classN und wählen Sie einen Eingang innerhalb dieser Klasse?
Güte,
Dan