Benötigen Sie eine bessere Methode zum Überprüfen von ASP.NET-Kontrollkästchen mithilfe eines Plug-ins für die JQuery-Überprüfung?

Problem:

Ich möchte einige ASP.NET-Checkboxen mit dem jquery validation plugin validieren (zu finden unter:http://bassistance.de/jquery-plugins/jquery-plugin-validation/)

Worum es geht:

Es ist nicht möglich, das Namensattribut von ASP.NET-Kontrollkästchen festzulegen (oder?). Es wird automatisch gesetzt, wenn das Steuerelement gerendert wird und kann mit abgerufen werden

<%= emailCheckBox.UniqueID %>

Also zwei Checkboxen wie folgt:

<asp:CheckBox runat="server" ID="emailAcceptCheckBox" />Email<br />
<asp:CheckBox runat="server" ID="phoneAcceptCheckBox" />Phone<br />

wird rendern zu:

<INPUT id="ctl00_MainContentPlaceHolder_emailAcceptCheckBox" type="checkbox" name="ctl00$MainContentPlaceHolder$emailAcceptCheckBox">
<INPUT id="ctl00_MainContentPlaceHolder_phoneAcceptCheckBox" type="checkbox" name="ctl00$MainContentPlaceHolder$phoneAcceptCheckBox">

Vielleicht ist es ein Chaos, ASP.NET mit dem Plugin für die JQuery-Überprüfung zu mischen, aber ich bevorzuge das Plugin für die JQuery-Überprüfung und es funktioniert gut mit Eingaben und anderen Feldern.

Das Problem ist, dass das Plugin für die JQuery-Validierung die Kontrollkästchen mit dem Attribut name von Kontrollkästchen gruppieren möchte. Diese Namensattribute sollten allen Kontrollkästchen und einer Gruppe entsprechen.

Was ich getan habe:

Ich habe ALLEN Kontrollkästchen mit jquery eine Regel hinzugefügt:

$("#[id*='AcceptCheckBox']").each(function() { $(this).rules("add", { minchecked: 1 }); });

Und ich habe meine eigene Regel hinzugefügt, die nach Kontrollkästchen sucht:

jQuery.validator.addMethod("minchecked",
 function(value, element, param) {
     var noOfChecked = $("#[id*='AcceptCheckBox']:checked").length;
          return noOfChecked >= param;
     },
 "Error");

(Diese Regel gilt für Kontrollkästchen, deren IDs AcceptCheckBox enthalten. In diesem Beispiel ist dies jedoch in Ordnung.)

Wenn ich anrufe:

var result = $("#aspnetForm").validate().form();

Es kehrt perfekt zurück, wenn meine Validierung erfolgreich war oder fehlgeschlagen ist!

ABER:

1) Ich glaube nicht, dass dies eine sehr saubere und schöne Lösung ist. Besser beraten?

2) Wenn ich validate (). Form () ausführe, durchläuft es ALLE meine Kontrollkästchen und aktiviert für jedes Kontrollkästchen alle anderen Kontrollkästchen. Das ist wirklich nicht nötig. Wie kann ich das vermeiden?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage