当前位置:  开发笔记 > 前端 > 正文

如何清除jQuery验证错误消息?

如何解决《如何清除jQuery验证错误消息?》经验,为你挑选了9个好方法。

我正在使用jQuery验证插件进行客户端验证.editUser()单击"编辑用户"按钮调用该功能,该按钮显示错误消息.

但是我想在我的表单上清除错误消息,当我点击"清除"按钮时,它会调用一个单独的功能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
    }
}

Parrots.. 198

你想要的resetForm()方法:

var validator = $("#myform").validate(
   ...
   ...
);

$(".cancel").click(function() {
    validator.resetForm();
});

我从他们的一个演示的源头抓住了它.

注意:此代码不适用于Bootstrap 3.



1> Parrots..:

你想要的resetForm()方法:

var validator = $("#myform").validate(
   ...
   ...
);

$(".cancel").click(function() {
    validator.resetForm();
});

我从他们的一个演示的源头抓住了它.

注意:此代码不适用于Bootstrap 3.


对于那些使用bootstrap的人,有些情况下`resetForm()`不会清除表单子元素上的所有`.error`实例.除非你调用`.removeClass()`,否则这会留下像红色文本一样的残留CSS.示例:`$('#myform .control-group').removeClass('error');`
使用bootstrap 3这不会隐藏字段验证错误.多可惜.
此resetForm不会没有字面意义上的表单数据。

2> Travis J..:

我自己遇到过这个问题.在根据步骤构建表单时,我需要有条件地验证表单的各个部分(即在运行时动态附加某些输入).因此,有时选择下拉列表需要验证,有时则不需要验证.但是,在考验结束时,需要进行验证.因此,我需要一种强大的方法,而不是一种解决方法.我咨询了源代码jquery.validate.

这是我想出的:

通过指示验证成功来清除错误

调用错误显示处理程序

清除所有成功或错误的存储

重置整个表单验证

这是代码中的样子:

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);

缩小为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();


工作得很好,这正是我所需要的.谢谢.
多数民众赞成,这个解决方案也在使用"ValidationMessageFor"

3> Nick Craver..:

如果您只想隐藏错误:

$("#clearButton").click(function() {
  $("label.error").hide();
  $(".error").removeClass("error");
});

如果您指定了errorClass,则调用该类隐藏error(默认)我在上面使用.


@mark - 正确,但它并不是设计为...它们仍然无效,我们只是隐藏了这种情况下的错误消息.对于您*具体*想要隐藏(不忽略,例如禁止提交)错误的情况,这可以替代已接受的答案.你经常会想到:)

4> Juri..:

如果您之前没有将验证器与表单相关联,那么您也可以简单地调用它们

$("form").validate().resetForm();

因为.validate()将返回您之前附加的相同验证器(如果您这样做).



5> Abhijit Mazu..:

如果你想在不使用单独变量的情况下这样做

$("#myForm").data('validator').resetForm();



6> Meower68..:

不幸的是,validator.resetForm()在许多情况下,它不起作用.

我有一个案例,如果有人在带有空白值的表单上点击"提交",它应该忽略"提交".没有错误.这很容易.如果有人输入部分值,并点击"提交",则应标记某些字段有错误.但是,如果他们消除了这些值并再次点击"提交",则应清除错误.在这种情况下,由于某种原因,验证器中的"currentElements"数组中没有元素,因此执行.resetForm()绝对没有任何内容.

这上面有bug.

在他们修复它们之前,你需要使用Nick Craver的答案,而不是Parrots接受的答案.



7> 小智..:

您可以使用:

$("#myform").data('validator').resetForm();



8> Karra..:

我想我们只需要输入输入来清理所有东西

$("#your_div").click(function() {
  $(".error").html('');
  $(".error").removeClass("error");
});



9> Chintsu..:

如果您只想清除验证标签,可以使用jquery.validate.js中的代码resetForm()

var validator = $('#Form').validate();

validator.submitted = {};
validator.prepareForm();
validator.hideErrors();
validator.elements().removeClass(validatorObject.settings.errorClass);

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有