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?













