Aveti nevoie de o modalitate mai bună de a valida checkbox ASP.NET folosind un plugin de validare jquery?

voturi
3

Problemă:

Vreau să valideze unele ASP.NET-checkbox utilizând plugin - ul de validare jQuery (găsit la: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ )

Ce este vorba:

Nu este posibil să setați atributul numele de checkbox ASP.NET (sau este?). Va fi setat automat, atunci când controlul este redat și pot fi recuperate folosind

<%= emailCheckBox.UniqueID %>

Deci două casete de selectare ca următoarele:

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

va face la:

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

Poate că e un dezastru să se amestece ASP.NET cu plugin-ul de validare jQuery, dar eu prefer plugin-ul de validare jQuery și funcționează bine cu intrări și alte domenii.

Problema este, că plugin-ul de validare jquery vrea să grupeze casetele de selectare folosind numele-atributul de casete de selectare. Acest nume atribute ar trebui să fie egal cu toate casetele de selectare și un grup.

Ce am facut:

Am adăugat o regulă pentru toate casetele de validare folosind jquery:

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

Și a adăugat propria mea regulă de verificare pentru casetele de selectare:

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

(Această regulă se va aplica pentru casetele de selectare ale căror ID-uri includ AcceptCheckBox, dar este în regulă în acest exemplu).

Când eu numesc:

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

Se întoarce perfect în cazul meu de validare a reușit sau nu a reușit!

DAR:

1) Nu simt că aceasta este o soluție foarte curat și frumos. Orice sfat mai bun?

2) Când am rulat Validează (). Forma () o să treacă prin toate căsuțele mele și pentru fiecare dintre ele verifica toate celelalte casetele de selectare. Nu e cu adevărat necesar. Cum pot evita acest lucru?

Întrebat 16/07/2009 la 10:44
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

În general, codul arata bine pentru mine. Cred că ați manipulat curat ASP: limitarea checkbox (nu se poate specifica atributul „name“ pentru asp: caseta de validare).

Personal, as folosi caseta de validare HTML obișnuit.

<input type="checkbox" runat="server" ID="emailAcceptCheckBox" name="acceptCheckBox" value="emailAccepted" /><label for="emailAcceptCheckBox">Email</label><br />
<input type="checkbox" runat="server" ID="phoneAcceptCheckBox" name="acceptCheckBox" value="phoneAccepted" /><label for="phoneAcceptCheckBox">Email</label><br />

(Am adăugat o etichetă atașată, astfel încât utilizatorul poate face clic pe etichetă (țintă mai mare) pentru a verifica / debifați caseta.)

Mai sus va simplifica codul jQuery.

Pe codul de pe partea de server, verificați Request.Form [ „acceptCheckBox“] pentru a vedea ce este verificat și ce nu este.

Publicat 16/07/2009 la 17:49
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more