10

Es un flujo de inicio de sesión clásico. El usuario puede elegir entre 'usuario nuevo' o 'usuario existente'. Si el usuario es nuevo, el nombre en el cuadro de inicio de sesión debe validar contra el servidor para ver si el nombre de usuario es único; si se trata de un usuario existente, este cheque se saltará ya que esperamos que el nombre de usuario ya se haya tomado (por supuesto).Forzar una revalidación en mvc3 validación remota no intrusiva

Agregué un atributo [Remoto] en el modelo de vista y agregué el botón de radio para usuario nuevo/saliente como 'campos adicionales'. De esta forma, la validación remota se devolverá verdadera si se trata de un usuario existente y, si no es así, verificará la base de datos para ver si se toma el nombre de usuario.

Esto funciona muy bien, excepto cuando el usuario decide cambiar el botón de radio (nuevo/existente) después de haber ingresado un nombre de usuario (y la validación remota se ha ejecutado). Como la validación remota solo se ejecuta automáticamente cuando cambia el nombre de usuario (esa es la propiedad con el atributo [Remoto]), al cambiar el botón de radio solo, no se ejecutará nuevamente.

Así que mi problema es, ¿cómo puedo forzar la ejecución de la validación remota? Probé los hacks habituales activando un evento de cambio/enfoque/desenfoque en el campo de entrada de nombre de usuario, pero la llamada no se desencadena. Consideré agregar un [Remote] similar en el botón de radio, pero eso realmente complicaría las cosas con dos mensajes de error de igual apariencia, colocados en la misma posición absoluta.

¿Hay alguna manera de activar una revalidación?

Respuesta

17

creo que la validación de jQuery puede ser activado utilizando $ ("# formid") validar()

Algunos más opciones se pueden encontrar en los documentos:. http://docs.jquery.com/Plugins/validation, y al Brad Wilson's blog (también se puede encontrar algo de información en los comentarios)

¿Ha analizado los atributos de Datos que tiene la entrada, tal vez está en la memoria caché? algo así como this.

EDIT: Sólo una aclaración, así es como lo tengo para trabajar

$('#UserName').removeData('previousValue'); 
$('form').validate().element('#UserName'); 
+0

Sólo si la validación no se ha ejecutado ya, que lo ha hecho. Además, por alguna razón, la validación remota parece no ejecutarse nuevamente, incluso si elimino el validador en el formulario, y vuelvo a analizar todo el formulario nuevamente (otras validaciones no remotas se ejecutan nuevamente si lo hago) –

+0

Ok gracias por la actualización, i Veremos ésos :) –

+1

Estabas al tanto con el almacenamiento en caché. Pensé que lo intenté (eliminé TODA la información y luego revalidé TODO el formulario), pero el enlace lo tenía todo –

Cuestiones relacionadas