6

我在模态中为我的表单使用引导验证器。验证器在后续表单访问中保留。例如,如果执行以下操作

  1. 访问表单输入一些有效值并提交表单。
  2. 再次访问表单,该字段的颜色仍然保持绿色,因为我在之前的表单提交中输入了一个有效条目

    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
     <div class="modal-dialog">
       <div class="modal-content">
       <div class="modal-header">
         <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
        <h4 class="modal-title" id="myModalLabel">Add new Node</h4>
      </div>
       <div class="modal-body">
        <div class="modal-body">
            <form role="form" id="addNodeForm">
              <div class="form-group">
                <label for="nodename" class="control-label">Node Name</label>
                <input type="text" name="nodename" class="form-control" id="nodename" required>
              </div>
    
            </form>
       </div>
      <!--  <div class="alert alert-success">
            <a href="#" class="close" data-dismiss="alert">&times;</a>
            <div id="thanks"></div>
        </div> -->
     </div>
     <div class="modal-footer">
      <button type="button" id="add-close" class="btn btn-default" data-dismiss="modal">Close</button>
       <button type="button" id="add-save" class="btn btn-primary">Save changes</button>
     </div>
    </div>
    

            $('#myModal').on('hidden.bs.modal', function(){
                $(this).removeData('bs.modal');
                $('#nodename').val("");
                $('#addNodeForm').bootstrapValidator('resetForm', true);
            });
    
            $('#myModal').on('show.bs.modal', function () {
                 // $('#addNodeForm').bootstrapValidator('resetForm', true);
                $(this).removeData('bs.modal');
                $('#addNodeForm').bootstrapValidator('resetForm', true);
                  $.ajax(
                         {
                             url: "node/getnodelist",
                             type: "GET",
                             success:function(text) 
                             {
                                 alert(text);
                                nodelist = text;
                             },
                             error: function(jqXHR, textStatus, errorThrown) 
                             {
                                 //if fails      
                             }
                         });
                });
    
            $('#addNodeForm').bootstrapValidator({
                feedbackIcons: {
                    valid: 'glyphicon glyphicon-ok',
                    invalid: 'glyphicon glyphicon-remove',
                    validating: 'glyphicon glyphicon-refresh'
                },
                fields: {
                    nodename: {
                        validators: {
                            notEmpty: {
                                message: 'Function name is required'
                            }
                        }
                    }
                }
            });
    
4

6 回答 6

10

当模态对用户隐藏完成时触发该hidden.bs.modal事件,因此表单将被隐藏,并且默认情况下 BoostarpValidator 不会处理或验证隐藏字段。

因此,为了在隐藏模式时重置表单,您应该添加:

excluded: ':disabled'

到你的 JS 代码。

现场示例:http: //jsfiddle.net/Arkni/ndpv76bk/

参考:

编辑

excluded添加选项后,您在表单上对 bootstrapValidator 的初始化应如下所示:

    $('#addNodeForm').bootstrapValidator({
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        excluded: ':disabled',   // <=== Adding the 'excluded' option
        fields: {
            nodename: {
                validators: {
                    notEmpty: {
                        message: 'Function name is required'
                    }
                }
            }
        }
    });
于 2014-12-11T00:37:10.567 回答
10

尝试以下代码:

$('#contactform').bootstrapValidator('resetForm', true);
于 2016-01-19T07:47:56.030 回答
0

尝试以下代码在您要重置表单的变电站..

 $('#addNodeForm').trigger("reset");
于 2016-03-18T07:19:28.953 回答
0

在 bootstrap 5 中,只需从表单元素中删除 CSS 类“已验证”

于 2021-11-23T22:25:34.460 回答
0

当模态即将被隐藏时重置您的表单

$("#addUserModal").on('hide.bs.modal', function(){
  $("#userForm")[0].reset();
  $('#userForm').bootstrapValidator('resetForm', true);
});
于 2020-06-13T14:33:26.960 回答
0

reset()函数将重置您的表单而不是引导验证错误。

所以我们需要做的只是告诉表单您的表单是新鲜的,从您的表单中删除已验证。就像下面一样。

document.getElementsByClassName('needs-validation')[0].classList.remove("was-validated")
于 2020-10-24T19:17:58.330 回答