【问题标题】:Bootstrap Validation for horizontal form水平表单的引导验证
【发布时间】:2017-05-12 13:40:25
【问题描述】:

我正在使用的 Bootstrap Validator 遇到一个奇怪的问题。这是一个有效的小提琴: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、项目名称和发布日期。一旦我单击提交按钮,引导错误类也适用于相邻的字段主管。任何想法如何防止这种情况发生?

【问题讨论】:

  • 在 Supervisor 输入字段中添加另一个类并设置默认边框颜色

标签: javascript jquery html twitter-bootstrap validation


【解决方案1】:

终于找到了一种在一行中处理多个表单组的方法。刚刚在每个输入周围创建了一个 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'
                            }
                        }
                    }
                }
            });
        });

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

【讨论】:

  • 这对我有用,这帮助我解决了问题。谢谢。
【解决方案2】:

请试试这个,似乎验证错误整个 form-group 应用验证错误。

小提琴:https://jsfiddle.net/p6jytvLj/2/

control-label 类导致了这个问题。我已将其从 Supervisor 中删除,现在它可以正常工作了。

<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" 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>

【讨论】:

  • 我已经试过了。它不起作用。我也想要彼此相邻的字段,因此它们都在一个表单组中,而不是单独的一个。
  • 我希望主管字段与发布日期字段相邻。这是我的要求。否则这可能是一种解决方案
  • @JestinoSam 我修好了。请检查更新的答案和小提琴jsfiddle.net/p6jytvLj/2
  • 我可以看到错误类仍在您的小提琴中应用于主管字段。没有按预期工作。
  • @JestinoSam 你检查过更新的小提琴吗? /2 链接?
【解决方案3】:

只有一个错误。用我的替换你的 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>  

  </div>
  <div class="form-group">
    <label class="col-md-2 control-label" for="inputSupervisor">Supervisor </label>
    <div class="col-md-3 col-3-input">
      <input id="inputSupervisor" name="inputSupervisor" 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>

更新小提琴: https://jsfiddle.net/anam8431/psrdzk2m/1/

【讨论】:

  • 抱歉,这不是我所期望的。请看清楚小提琴。
  • 我可以知道你在期待什么吗?
  • 检查小提琴。我只对项目 ID、项目名称和发布日期应用了验证,但错误类也被应用于主管字段。似乎整个表单组都被选中了
  • 嘿 Jestino,请检查我的小提琴。 jsfiddle.net/anam8431/psrdzk2m/1。验证表单时不会验证主管字段。
  • 我已经明确提到我需要发布日期旁边的主管字段。请阅读以上cmets
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2014-09-19
相关资源
最近更新 更多