Trenger en bedre måte å validere ASP.NET boksene ved hjelp av en jquery validering plugin?

stemmer
3

Problem:

Jeg ønsker å validere noen ASP.NET-boksene ved hjelp av jQuery validering plugin (finnes på: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ )

Hva det handler om:

Det er ikke mulig å sette navnet egenskap av ASP.NET boksene (eller er det?). Det vil automatisk bli satt når kontrollen er utført og kan hentes ved hjelp av

<%= emailCheckBox.UniqueID %>

Så to boksene som følgende:

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

vil gjengi til:

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

Kanskje det er et rot å blande ASP.NET med jQuery validering plugin, men jeg foretrekker jquery validering plugin og det fungerer fint med innganger og andre felt.

Problemet er at jquery validering plugin ønsker å gruppere boksene bruke navnet-egenskap av boksene. Dette navnet attributter bør være lik alle boksene og en gruppe.

Hva jeg har gjort:

Jeg har lagt til en regel å ALLE boksene ved hjelp av jQuery:

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

Og lagt min egen regel sjekker for boksene:

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

(Denne regelen vil gjelde for boksene som IDer består AcceptCheckBox, men det er greit i dette eksempelet).

Når jeg kaller:

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

Den returnerer perfekt hvis min validering vellykket eller ikke!

MEN:

1) Jeg føler ikke at dette er en veldig ren og fin løsning. Noen bedre råd?

2) Når jeg kjører validere (). Form () det vil gå gjennom alle mine boksene og for hver av dem sjekke alle de andre boksene. Det er egentlig ikke nødvendig. Hvordan kan jeg unngå dette?

Publisert på 16/07/2009 klokken 09:44
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Totalt koden ser greit for meg. Jeg tror du har en ren håndtert asp: boksen begrensning (du kan ikke oppgi 'navn' attributt for asp: boksen).

Personlig ville jeg bruke vanlig HTML boksen.

<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 />

(Jeg har lagt til en etikett tag, slik at brukeren kan klikke på etiketten (større mål) for å sjekke / fjern avmerkingen.)

Ovenfor vil forenkle jQuery kode.

På serveren din side kode, sjekk Request.Form [ "acceptCheckBox"] for å se hva som er kontrollert og hva som ikke.

Svarte 16/07/2009 kl. 16:49
kilden bruker

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