Estoy usando el complemento de validación jQuery para la validación del lado del cliente. editUser()
Se llama a la función al hacer clic en el botón 'Editar usuario', que muestra mensajes de error.
Pero quiero borrar los mensajes de error en mi formulario, cuando hago clic en el botón 'Borrar', que llama a una función separada clearUser()
.
function clearUser() {
// Need to clear previous errors here
}
function editUser(){
var validator = $("#editUserForm").validate({
rules: {
userName: "required"
},
errorElement: "span",
messages: {
userName: errorMessages.E2
}
});
if(validator.form()){
// Form submission code
}
}
jquery
jquery-validate
Vicky
fuente
fuente
resetForm()
que no se borran todas las instancias de.error
los elementos secundarios del formulario. Esto dejará CSS residual como color de texto rojo a menos que llame.removeClass()
. Ejemplo:$('#myform .control-group').removeClass('error');
Me encontré con este problema yo mismo. Tuve la necesidad de validar condicionalmente partes de un formulario mientras el formulario se construía en función de los pasos (es decir, ciertas entradas se agregaron dinámicamente durante el tiempo de ejecución). Como resultado, a veces un menú desplegable de selección necesitaría validación, y a veces no. Sin embargo, al final de la prueba, necesitaba ser validado. Como resultado, necesitaba un método robusto que no fuera una solución alternativa. Consulté el código fuente de
jquery.validate
.Esto es lo que se me ocurrió:
Así es como se ve en el código:
minimizado como una extensión jQuery:
fuente
showErrors
hace alguna manipulación DOM y se llama para cada elemento del formulario. El navegador se congeló durante un par de segundos al usar este código en un formulario con ~ 30 controles. La solución para mí fueshowErrors
salir del ciclo y simplemente llamarlo una vez justo antesvalidator.resetForm
. Por lo que puedo decir, se comporta exactamente de la misma manera y es mucho más rápido.Si simplemente quiere ocultar los errores:
Si especificó el
errorClass
, llame a esa clase para ocultar en su lugarerror
(el valor predeterminado) que utilicé anteriormente.fuente
$(".has-error").removeClass("has-error");
Si anteriormente no guardó los validadores aparte al adjuntarlos al formulario, también puede simplemente invocar
ya
.validate()
que devolverá los mismos validadores que adjuntó anteriormente (si lo hizo).fuente
Si desea hacerlo sin usar una variable separada, entonces
fuente
Lamentablemente,
validator.resetForm()
NO funciona, en muchos casos.Tengo un caso en el que, si alguien presiona "Enviar" en un formulario con valores en blanco, debería ignorar el "Enviar". Sin errores. Eso es bastante fácil. Si alguien pone un conjunto parcial de valores y presiona "Enviar", debe marcar algunos de los campos con errores. Sin embargo, si eliminan esos valores y presionan "Enviar" nuevamente, debería borrar los errores. En este caso, por alguna razón, no hay elementos en la matriz "currentElements" dentro del validador, por lo que la ejecución
.resetForm()
no hace absolutamente nada.Hay errores publicados en esto.
Hasta el momento en que los arreglen, debe usar la respuesta de Nick Craver, NO la respuesta aceptada de Parrots.
fuente
Puedes usar:
fuente
Creo que solo necesitamos ingresar las entradas para limpiar todo
fuente
Si solo desea borrar las etiquetas de validación, puede usar el código de jquery.validate.js resetForm ()
fuente
Para aquellos que usan el código Bootstrap 3 a continuación, limpiarán todo el formulario: mensajes, íconos y colores ...
fuente
Probé con:
Estará bien, cuando necesite validarlo nuevamente.
fuente
Esto destruirá todos los errores de validación.
fuente
En mi caso ayudó con el enfoque:
fuente
Si desea ocultar una validación en el lado del cliente que no forma parte del envío de un formulario, puede usar el siguiente código:
fuente
Intenté cada respuesta. Lo único que funcionó para mí fue:
Utilizando:
fuente
Ninguna de las otras soluciones funcionó para mí.
resetForm()
está claramente documentado para restablecer el formulario real, por ejemplo, eliminar los datos del formulario, que no es lo que quiero. Simplemente a veces no hace eso, sino que simplemente elimina los errores. Lo que finalmente funcionó para mí es esto:fuente
Intente usar esto para eliminar la validación al hacer clic en cancelar
fuente
Tratar de usar:
en el botón Borrar.
fuente
Para eliminar el resumen de validación, puede escribir esto
$('div#errorMessage').remove();
Sin embargo, una vez que eliminó, nuevamente si la validación falló, no mostrará este resumen de validación porque lo eliminó. En su lugar, use hide and display usando el código a continuación
fuente
Ninguna de las soluciones anteriores funcionó para mí. Me decepcionó perder el tiempo con ellos. Sin embargo, hay una solución fácil.
La solución se logró comparando el marcado HTML para el estado válido y el marcado HTML para el estado de error.
Ningún error produciría:
cuando ocurre un error, este div se llena con los errores y la clase se cambia a validation-summary-errors:
La solución es muy simple. Borre el HTML del div que contiene los errores y luego cambie la clase nuevamente al estado válido.
Feliz codificación
fuente
Si desea restablecer
numberOfInvalids()
también, agregue la siguiente línea en laresetForm
función enjquery.validate.js
el número de línea del archivo: 415.fuente
Lo acabo de hacer
$('.input-validation-error').removeClass('input-validation-error');
para eliminar el borde rojo en los campos de error de entrada.
fuente
$(FORM_ID).validate().resetForm();
Todavía no funciona como se esperaba.Estoy limpiando la forma con
resetForm()
. Funciona en todos los casos excepto uno !!Cuando cargo cualquier formulario a través de Ajax y aplico la validación del formulario después de cargar mi dinámica
HTML
, luego cuando intento restablecer el formulario conresetForm()
y falla y también borró toda la validación que estoy aplicando en los elementos del formulario.Por lo tanto, no utilice esto para formularios cargados con Ajax O validación inicializada manualmente.
PD : Necesitas usar la respuesta de Nick Craver para tal escenario como expliqué.
fuente
validator.resetForm()
Método de texto de error claro. Pero si desea eliminar el borde ROJO de los campos, debe eliminar la clasehas-error
fuente
Función utilizando los enfoques de Travis J , JLewkovich y Nick Craver ...
fuente
Escriba su propio código porque todos usan un nombre de clase diferente. Estoy restableciendo la validación de jQuery por este código.
fuente