Problema:
Quiero validar algunas casillas de verificación de ASP.NET utilizando el complemento de validación jquery (que se encuentra en: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ )
De qué se trata
No es posible establecer el atributo de nombre de las casillas de ASP.NET (¿o no?). Se establecerá automáticamente, cuando se represente el control y se pueda recuperar usando
<%= emailCheckBox.UniqueID %>
Entonces dos casillas de verificación como las siguientes:
<asp:CheckBox runat=server ID=emailAcceptCheckBox />Email<br />
<asp:CheckBox runat=server ID=phoneAcceptCheckBox />Phone<br />
rendirá a:
<INPUT id=ctl00_MainContentPlaceHolder_emailAcceptCheckBox type=checkbox name=ctl00$MainContentPlaceHolder$emailAcceptCheckBox>
<INPUT id=ctl00_MainContentPlaceHolder_phoneAcceptCheckBox type=checkbox name=ctl00$MainContentPlaceHolder$phoneAcceptCheckBox>
Quizás es un desastre mezclar ASP.NET con el complemento de validación de jquery, pero prefiero el complemento de validación de jquery y funciona bien con las entradas y otros campos.
El problema es que el complemento de validación de jquery desea agrupar las casillas de verificación usando el nombre-atributo de las casillas de verificación. Los atributos de este nombre deben ser iguales a todas las casillas de verificación y un grupo.
Qué he hecho:
Agregué una regla a TODAS las casillas usando jquery:
$(#[id*='AcceptCheckBox']).each(function() { $(this).rules(add, { minchecked: 1 }); });
Y agregué mi propia regla para buscar casillas de verificación:
jQuery.validator.addMethod(minchecked,
function(value, element, param) {
var noOfChecked = $(#[id*='AcceptCheckBox']:checked).length;
return noOfChecked >= param;
},
Error);
(Esta regla se aplicará a las casillas de verificación cuyos ID incluyen AcceptCheckBox, pero está bien en este ejemplo).
Cuando llamo:
var result = $(#aspnetForm).validate().form();
¡Vuelve perfectamente si mi validación tuvo éxito o falló!
PERO:
1) No creo que esta sea una solución muy limpia y agradable. ¿Algún consejo mejor?
2) Cuando ejecuto validate (). Form () pasará TODAS mis casillas de verificación y para cada una de ellas verificará todas las demás casillas de verificación. Eso realmente no es necesario. ¿Cómo puedo evitar esto?













