javascript - 水平表单的 Bootstrap 验证

标签 javascript jquery html twitter-bootstrap validation

我正在使用的 Bootstrap 验证器遇到一个奇怪的问题。这是一个工作 fiddle :https://jsfiddle.net/p6jytvLj/ 注意:调整输出窗口的大小以查看实际的表单。

HTML 代码

<form class="form-horizontal" id="main-form" role="form" method="post">
   <!-- Text input-->
   <div class="form-group">
      <label class="col-md-2 control-label" for="inputProjectID">Project ID </label>
      <div class="col-md-3 col-3-input">
         <input id="inputProjectID" name="inputProjectID" type="text" placeholder="Your Project ID" class="form-control input-md">
      </div>
      <label class="col-md-2 control-label" for="inputProjectName">Project Name </label>
      <div class="col-md-3 col-3-input">
         <input id="inputProjectName" name="inputProjectName" type="text"
            placeholder="Your Project Name" class="form-control input-md">
      </div>
   </div>
   <!-- Text input-->
   <div class="form-group">
      <label class="col-md-2 control-label" for="datepicker">Release Date </label>
      <div class="col-md-3 col-3-input">
         <input id="datepicker" name="inputReleaseDate" type="text"
            placeholder="Select Release Date" class="form-control input-md">
      </div>
      <label class="col-md-2 control-label" for="inputSupervisor">Supervisor </label>
      <div class="col-md-3 col-3-input">
         <input id="textinput" name="textinput" type="text" placeholder="Your Supervisor's Name" class="form-control input-md">
      </div>
   </div>
   <!-- Text area -->
   <div class="form-group">
      <label class="col-md-2 control-label" for="inputProjectDesc">Project Description </label>
      <div class="col-md-9 col-9-input">
         <textarea style="resize: none;" rows="3" class="form-control" id="inputProjectDesc"
            name="inputProjectDesc" placeholder="Your Project Description"></textarea>
      </div>
   </div>
   <button type="submit" class="btn btn-success" form="main-form" data-toggle="tooltip"
      title="Click to submit this form" onclick="submitForms()">Submit</button>
</form>

JS

$(document).ready(function() {
        $('#main-form').bootstrapValidator({
            framework: 'bootstrap',
            icon: {
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
            },
            fields: {
                inputProjectID: {
                    row: 'col-md-3',
                    validators: {
                        notEmpty: {
                            message: 'The Project ID is required'
                        }
                    }
                },
                inputProjectName: {
                    row: 'col-md-3',
                    validators: {
                        notEmpty: {
                            message: 'The Project Name is required'
                        }
                    }
                },
                inputReleaseDate: {

                    validators: {
                        notEmpty: {
                            message: 'Please select a Release Date'
                        }
                    }
                }
            }
        });
});

我面临的问题是我仅对前 3 个字段进行设置验证,即项目 ID、项目名称和发布日期。一旦我单击提交按钮, Bootstrap 错误类也适用于相邻的字段主管。有什么想法可以防止这种情况发生吗?

最佳答案

终于找到了一种在一行中处理多个表单组的方法。只需在每个输入周围创建一个 div,为其分配一个类,然后在 JS 代码中提及类名。请参阅下面更新的 HTML 和 JS 代码。

HTML 代码

<form class="form-horizontal" id="main-form" role="form" data-toggle="validator"
   action="blank.html" method="post">
   <!-- Text input -->
   <div class="form-group">
      <div class="group"> <!-- Added this div surrounding each input -->
         <label class="col-md-2 control-label" for="inputProjectID">Project ID </label>
         <div class="col-md-3 col-3-input">
            <input id="inputProjectID" name="inputProjectID" type="text" placeholder="Your Project ID"
               class="form-control input-md">
         </div>
      </div>
      <div class="group">
         <label class="col-md-2 control-label" for="inputProjectName">Project Name </label>
         <div class="col-md-3 col-3-input">
            <input id="inputProjectName" name="inputProjectName" type="text"
               placeholder="Your Project Name" class="form-control input-md">
         </div>
      </div>
   </div>
   <!-- Text input -->
   <div class="form-group">
      <div class="group">
         <label class="col-md-2 control-label" for="datepicker">Release Date </label>
         <div class="col-md-3 col-3-input">
            <input id="datepicker" name="inputReleaseDate" type="text"
               placeholder="Select Release Date" class="form-control input-md">
         </div>
      </div>
      <div class="group">
         <label class="col-md-2 control-label" for="inputSupervisor">Supervisor </label>
         <div class="col-md-3 col-3-input">
            <input id="textinput" name="textinput" type="text" placeholder="Your Supervisor's Name"
               class="form-control input-md">
         </div>
      </div>
   </div>
   <!-- Text area -->
   <div class="form-group">
      <label class="col-md-2 control-label" for="inputProjectDesc">Project Description </label>
      <div class="col-md-9 col-9-input">
         <textarea style="resize: none;" rows="3" class="form-control" id="inputProjectDesc"
            name="inputProjectDesc" placeholder="Your Project Description"></textarea>
      </div>
   </div>
</form>

JS 代码:

$(document).ready(function() {
            $('#main-form').bootstrapValidator({
                framework : 'bootstrap',
                feedbackIcons : {
                    valid : 'glyphicon glyphicon-ok',
                    invalid : 'glyphicon glyphicon-remove',
                    validating : 'glyphicon glyphicon-refresh'
                },
                fields : {
                    inputProjectID : {
                        group : '.group',
                        validators : {
                            notEmpty : {
                                message : 'The Project ID is required'
                            }
                        }
                    },
                    inputProjectName : {
                        group : '.group',
                        validators : {
                            notEmpty : {
                                message : 'The Project Name is required'
                            }
                        }
                    },
                    inputReleaseDate : {
                        group : '.group',
                        validators : {
                            notEmpty : {
                                message : 'Please select a Release Date'
                            },
                            date : {
                                format : 'MM/DD/YYYY'
                            }
                        }
                    }
                }
            });
        });

这终于对我有用了! 这是更新后的 fiddle : https://jsfiddle.net/p6jytvLj/7/

关于javascript - 水平表单的 Bootstrap 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41359219/

相关文章:

javascript - Google Maps Javascript API 忽略输入字段的 CSS

javascript - 我想让 jquery 使用 ajax 更新复选框

javascript - 避免重复声明

javascript - 无法更新指令中的 $scope 值

javascript - 垂直菜单扩展不适用于动态内容

html - 两个页面上的相同 anchor ID : How to link from one page to the anchor on the other page

asp.net - 在 JavaScript 中禁用表

javascript - 如何将背景设置为您选择的颜色

javascript - JQuery 仅在初次按下时读取事件键?

javascript - 当我使用多个 jQuery change() 方法调用我的函数时,如何避免多次调用它?