隐藏由 jQuery 验证创建的标签

Hide a label created by jQuery Validation

我有一个使用 jQuery 验证来验证的表单。我遇到的问题是,在用户与文本框交互后 jQuery 验证会在其下方插入一个标签,将其下方的所有内容向下推。这是我的 HTML 表单代码

<form id="addForm">
  <div class="form-group">
    <label for="first">First Name</label>
    <input type="text" class="form-control" name="first" id="first" placeholder="First Name">
 </div>
 <div class="form-group">
    <label for="last">Last Name</label>
    <input type="text" class="form-control" name="last" id="last" placeholder="Last Name">
 </div>
 <button type="submit" class="btn btn-primary">Send</button>
</form>

验证脚本

$('#addForm').validate({
    rules: {
        first: {
            required: true
        },
        last: {
            required: true
        }
    },
    highlight: function (element) {
        $(element).closest('.form-group').removeClass('has-success').addClass('has-danger');
        $(element).closest('.form-control').removeClass('form-control-success').addClass('form-control-danger');
    },
    success: function (element) {
        element.closest('.form-group').removeClass('has-danger');
    }

});

我尝试添加

element.closest('.error').hide();

到成功功能,但这没有做任何事情。 我尝试添加一个空的 errorPlacement 函数

errorPlacement: function(error, element) {

}

它有点管用。但是,一旦错误被修复,它就会停止清除文本框周围错误突出显示的功能。

这是一个 link 到 JSFiddle

https://jsfiddle.net/q9bppocn/

你只需要删除标签就成功了。

JS

$('#addForm').validate({
    rules: {
        first: {
            required: true
        },
        last: {
            required: true
        }
    },
    highlight: function (element) {
        $(element).closest('.form-group').removeClass('has-success').addClass('has-danger');
        $(element).closest('.form-control').removeClass('form-control-success').addClass('form-control-danger');
    },
    success: function (element) {
      element.remove();
    }

});

这是一个jsFiddle.

由于插件会自动切换消息,因此您不必 "remove" 错误。

您应该简单地使用 unhighlighthighlight。它们是互补的功能,当它们一起工作时,将正确地切换错误。 success 函数仅用于在通常隐藏的情况下利用 label 元素。

highlight: function(element) {
    $(element).closest('.form-group').removeClass('has-success').addClass('has-danger');
    $(element).closest('.form-control').removeClass('form-control-success').addClass('form-control-danger');
},
unhighlight: function(element) {
    $(element).closest('.form-group').addClass('has-success').removeClass('has-danger');
    $(element).closest('.form-control').addClass('form-control-success').removeClass('form-control-danger');
}

演示jsfiddle.net/vboantcf/