resetform - ¿Cómo borrar los mensajes de error de validación de jQuery?
resetform(); (20)
Estoy usando el complemento de validación de jQuery para la validación del lado del cliente. La función editUser()
se editUser()
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
}
}
Creo que solo necesitamos ingresar las entradas para limpiar todo
$("#your_div").click(function() {
$(".error").html('''');
$(".error").removeClass("error");
});
Desafortunadamente, validator.resetForm()
NO funciona, en muchos casos.
Tengo un caso en el que, si alguien acierta en "Enviar" en un formulario con valores en blanco, debe ignorar el "Enviar". Sin errores. Eso es bastante fácil. Si alguien pone un conjunto parcial de valores y pulsa "Enviar", debería marcar algunos de los campos con errores. Sin embargo, si borran esos valores y presionan "Enviar" nuevamente, deberían borrar los errores. En este caso, por alguna razón, no hay elementos en la matriz "currentElements" dentro del validador, por lo que ejecutar .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 por los Loros.
Desea el método resetForm()
:
var validator = $("#myform").validate(
...
...
);
$(".cancel").click(function() {
validator.resetForm();
});
Lo agarré de la fuente de uno de sus demos .
Nota: Este código no funcionará para Bootstrap 3.
En mi caso ayudó con el enfoque:
$(".field-validation-error span").hide();
Intenta usar esto para eliminar la validación al hacer clic en cancelar
function HideValidators() {
var lblMsg = document.getElementById(''<%= lblRFDChild.ClientID %>'');
lblMsg.innerHTML = "";
if (window.Page_Validators) {
for (var vI = 0; vI < Page_Validators.length; vI++) {
var vValidator = Page_Validators[vI];
vValidator.isvalid = true;
ValidatorUpdateDisplay(vValidator);
}
}
}
Lo acabo de hacer
$(''.input-validation-error'').removeClass(''input-validation-error'');
para eliminar el borde rojo en los campos de error de entrada.
Me encontré con este problema yo mismo. Tuve la necesidad de validar condicionalmente partes de un formulario mientras se estaba construyendo el formulario en función de los pasos (es decir, ciertas entradas se añadieron dinámicamente durante el tiempo de ejecución). Como resultado, algunas veces un menú desplegable de selección necesitaría validación, y otras no. Sin embargo, para el final de la prueba, necesitaba ser validado. Como resultado, necesitaba un método robusto que no fuera una solución. jquery.validate
el código fuente para jquery.validate
.
Aquí es lo que se me ocurrió:
Esto es lo que parece en el código:
function clearValidation(formElement){
//Internal $.validator is exposed through $(form).validate()
var validator = $(formElement).validate();
//Iterate through named elements inside of the form, and mark them as error free
$(''[name]'',formElement).each(function(){
validator.successList.push(this);//mark as error free
validator.showErrors();//remove error messages if present
});
validator.resetForm();//remove error class on name elements and clear history
validator.reset();//remove all error and success data
}
//used
var myForm = document.getElementById("myFormId");
clearValidation(myForm);
minificado como una extensión jQuery:
$.fn.clearValidation = function(){var v = $(this).validate();$(''[name]'',this).each(function(){v.successList.push(this);v.showErrors();});v.resetForm();v.reset();};
//used:
$("#formId").clearValidation();
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:
<div class="validation-summary-valid" data-valmsg-summary="true"></div>
cuando ocurre un error, este div se rellena con los errores y la clase se cambia a validation-summary-errors:
<div class="validation-summary-errors" data-valmsg-summary="true">
La solución es muy simple. Borre el código HTML del div que contiene los errores y luego cambie la clase al estado válido.
$(''.validation-summary-errors'').html()
$(''.validation-summary-errors'').addClass(''validation-summary-valid'');
$(''.validation-summary-valid'').removeClass(''validation-summary-errors'');
Feliz codificación.
Para aquellos que usan el código de Bootstrap 3 a continuación, se limpiará toda la forma: medidas, iconos y colores ...
$(''.form-group'').each(function () { $(this).removeClass(''has-success''); });
$(''.form-group'').each(function () { $(this).removeClass(''has-error''); });
$(''.form-group'').each(function () { $(this).removeClass(''has-feedback''); });
$(''.help-block'').each(function () { $(this).remove(); });
$(''.form-control-feedback'').each(function () { $(this).remove(); });
Para eliminar el resumen de validación, puede escribir esto
$(''div#errorMessage'').remove();
Sin embargo, una vez que lo elimine, nuevamente, si la validación falló, no mostrará este resumen de validación porque lo eliminó. En su lugar use hide y display usando el siguiente código
$(''div#errorMessage'').css(''display'', ''none'');
$(''div#errorMessage'').css(''display'', ''block'');
Probé con:
$("div.error").remove();
$(".error").removeClass("error");
Estará bien, cuando necesites validarlo nuevamente.
Puedes usar:
$("#myform").data(''validator'').resetForm();
Si desea restablecer numberOfInvalids()
también, agregue la siguiente línea en la función jquery.validate.js
en el número de línea del archivo jquery.validate.js
: 415.
this.invalid = {};
Si no guardó previamente los validadores al adjuntarlos al formulario también puede simplemente invocar
$("form").validate().resetForm();
como .validate()
devolverá los mismos validadores que adjuntó anteriormente (si lo hizo).
Si quiere simplemente ocultar los errores:
$("#clearButton").click(function() {
$("label.error").hide();
$(".error").removeClass("error");
});
Si especificó el errorClass
, llame a esa clase para ocultar el error
(el predeterminado) que utilicé arriba.
Si quieres hacerlo sin usar una variable separada, entonces
$("#myForm").data(''validator'').resetForm();
Si solo quieres etiquetas de validación claras, puedes usar el código de jquery.validate.js resetForm ()
var validator = $(''#Form'').validate();
validator.submitted = {};
validator.prepareForm();
validator.hideErrors();
validator.elements().removeClass(validatorObject.settings.errorClass);
Tratar de usar:
onClick="$(''.error'').remove();"
en el botón Borrar.
$(FORM_ID).validate().resetForm();
todavía no está funcionando como se esperaba
Estoy borrando formulario con resetForm()
. ¡Funciona en todos los casos excepto en uno!
Cuando cargo cualquier formulario a través de Ajax y aplico la validación del formulario después de cargar mi HTML
dinámico, luego cuando trato de restablecer el formulario con resetForm()
y falla y también se descarta toda la validación que estoy aplicando en los elementos del formulario.
Así que amablemente no use esto para formularios cargados Ajax O validación inicializada manualmente.
PD . Necesitas usar la respuesta de Nick Craver para tal escenario como expliqué.
var validator = $("#myForm").validate();
validator.destroy();
Esto destruirá todos los errores de validación