He heredado algún código que divide una página en pestañas usando divs. En la primera página hay muchos validadores de campo y expresiones regulares requeridos. El problema es que un usuario puede cambiar a otra pestaña, activar una devolución de datos y fallar los validadores en la primera página, dejando las cosas en un lío.Cómo llamar a RequiredFieldValidator en el cliente antes de la devolución de datos
Lo que quiero poder hacer es realizar la validación en la primera página cuando un usuario selecciona otra pestaña, impidiendo que se muevan a una nueva pestaña hasta que la primera página sea válida.
<ul>
<li><a href="#tab1">Tab 1</a> </li>
<li><a href="#tab2" onclick="return isValid();">Tab 2</a></li>
<li><a href="#tab3" onclick="return isValid();">Tab 3</a></li>
</ul>
Donde isValid
necesita desconectar los validadores.
Gracias!
ACTUALIZACIÓN: La respuesta proporcionada por codeka es bastante estrecha, sin embargo, porque necesito proporcionar atributos tanto href y onclick (para evitar estropear la pantalla), el interruptor (ancla) pestaña todavía está teniendo lugar incluso si la validación falla Así es como resolví esto. Descargo de responsabilidad: código feo por delante
<ul>
<li><a id="tab1Tab" href="#tab1" style="display:none"/><a onclick="isValid('tab1');">Tab 1</a></li>
<li><a id="tab2Tab" href="#tab2" style="display:none"/><a onclick="isValid('tab2');">Tab 2</a></li>
<li><a id="tab3Tab" href="#tab3" style="display:none"/><a onclick="isValid('tab3');">Tab 3</a></li>
</ul>
function isValid(tab) {
var valid = Page_ClientValidate();
var tabId = (valid ? tab : "tab1") + "Tab";
$("#" + tabId).click();
}
Nota uso de jQuery para la compatibilidad entre navegadores con el evento click. Y esto solo funciona si no hay validadores en otras pestañas, según la respuesta de Thomas, tendré que usar grupos de validación y lógica adicional en isValid
si se agregan.
+1 Gracias, eso debería funcionar siempre que no haya otros validadores en las otras pestañas, será mejor que lo compruebe ahora :) – si618
También puede pasar el grupo de validación que desea validar, por ejemplo: 'Page_ClientValidate ("Registro"); ' –
Esto está bastante cerca, los validadores se activan con un clic, pero el ancla se sigue moviendo a otra pestaña incluso si se devuelve' falso '. – si618