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?













