Jquery Validate resetForm不会清除错误消息

 潘昀湖5159 发布于 2023-01-11 19:35

我使用制表符在表单之间导航,当用户按下下一个按钮时,将进行表单验证.如果有错误,它将在顶部显示错误摘要,并在每个字段显示各个错误.用户更正错误,然后按"下一步"按钮前进到下一个选项卡.按下上一个按钮时,不会清除错误消息.

如何清除顶部的错误容器以及每个表单字段中的各个错误消息,前提是表单在按下一个按钮时有效.我尝试过resetForm(),但是没有用.

这是我的代码

Select below

Jquery代码:

    $('#q0_btn_next').click(function (e) {

        e.preventDefault();

        var formID = $(this).closest('form').attr('id');
        var form = $('#'+ formID);

        if (form.valid()){

           //code to goto the next tab             

           // clear error message
           form.validate().resetForm();

        }


    });

    $('.wizardTab').each(function(){
    $(this).validate({

        onkeyup: false,
        onclick: false,
        onfocusout: false,
        validClass: "success",
        errorClass: "error",
        rules: {
            'select_graph_or_data': {
              required: true
            }
            // more rules for other forms
        },

        invalidHandler: function(form, validator) {

            if (!validator.numberOfInvalids())
                return;

            /*$('html, body').animate({
                scrollTop: $(validator.errorList[0].element).offset().top
                }, 500);*/

        },

        errorPlacement: function (error, element) {

            if (element.parents('.inputgroup').length) {
                error.insertBefore(element.parents('.inputgroup'));
                element.parents('.inputgroup').addClass('error');
            } else {
                error.insertBefore(element);
            };                     
        },

        showErrors: function (errorMap, errorList, currentForm) {

            errors = this.numberOfInvalids();
            var formID = this.currentForm.attributes.id.nodeValue;
            var alrt = $('#alert-form-'+ formID);


            if (errors > 0){

                this.defaultShowErrors();

                var msg = '

Your form has errors:

    '; $.each(errorMap, function(key, value) { msg += '
  • ' + value + '
  • '; }); msg += '
'; // Show the error in the error summary container $('#alert-form-' + formID).html(msg).show(); $(alrt).html(msg).show(); $('html, body').animate({ scrollTop: $(alrt).offset().top - 20}, 500); } } }); });

Sparky.. 8

通常,resetForm()应该删除包含错误消息的默认标签元素.

你的代码:

var formID = $(this).closest('form').attr('id'); // <- the ID of the form
var form = $('#'+ formID);                       // <- the form object

if (form.valid()){
   formID.validate().resetForm(); // <- should be your `form` variable, not `formID`.
}

但是,您的formID变量仅表示表单的ID,因此它不是正确的选择器.由于您的form变量代表了正确的选择器$('#'+ formID),因此您需要使用form.validate().resetForm()而不是formID.validate().resetForm()

请参阅文档:jqueryvalidation.org/Validator.resetForm

1 个回答
  • 通常,resetForm()应该删除包含错误消息的默认标签元素.

    你的代码:

    var formID = $(this).closest('form').attr('id'); // <- the ID of the form
    var form = $('#'+ formID);                       // <- the form object
    
    if (form.valid()){
       formID.validate().resetForm(); // <- should be your `form` variable, not `formID`.
    }
    

    但是,您的formID变量仅表示表单的ID,因此它不是正确的选择器.由于您的form变量代表了正确的选择器$('#'+ formID),因此您需要使用form.validate().resetForm()而不是formID.validate().resetForm()

    请参阅文档:jqueryvalidation.org/Validator.resetForm

    2023-01-11 19:37 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有