【问题标题】:Twitter Bootstrap and jQuery Validation Plugin - use class="control-group error"Twitter Bootstrap 和 jQuery 验证插件 - 使用 class="control-group error"
【发布时间】:2013-07-25 12:43:03
【问题描述】:

我使用 Twitter Bootstrap 框架创建了一个表单并集成了 jQuery 验证插件。我有一个表单,其中包含一系列带有单选按钮的是/否问题,我验证这些单选按钮以确保每个问题都不为空 - 这很好用。

我想利用 Bootstrap class="control-group error" 使错误文本显示为红色,以便用户能够看到 - 目前“此字段为必填项”文本为黑色,很难定位。

这里有一个我希望错误文本如何显示的示例:

http://twitter.github.io/bootstrap/base-css.html#forms

在本节末尾的“验证状态”下。这是在输入字段后显示红色消息的具体示例(我只希望在他们单击提交按钮后出现错误):

<div class="control-group error">
  <label class="control-label" for="inputError">Input with error</label>
  <div class="controls">
    <input type="text" id="inputError">
    <span class="help-inline">Please correct the error</span>
  </div>
</div>

这是我的表格,显示了一个问题:

<form class="form-horizontal" method="post" id="inputForm">
      <input type="hidden" name="recid" value="1">

      <table class="table table-condensed table-hover table-bordered">

      <h2>Input Form</h2>

          <tr>
          <td>Question 1.</td>
          <td>
              <div class="controls">
                  <label class="radio inline">
          <input type="radio" name="q1" value="Yes" required>Yes          </label>
                  <label class="radio inline">
          <input type="radio" name="q1" value="No" required>No        </label>
                  <label for="q1" class="error"></label>
        </div>
          </td>
          <td>Please answer Yes or No</td>
          </tr>

      </table>
       </div>

        <div class="control-group">
            <div class="controls">
              <button type="submit" class="btn btn-primary">Continue</button>
              <button type="reset" class="btn">Reset</button>
            </div>
        </div>

      </form>

我不知道如何将示例与我的表单结合起来,这样如果他们提交了表单并且他们没有回答问题,则警报会显示为红色。

我已经设置了一个 jsFiddle here,如果有帮助,它会显示这是行动。

【问题讨论】:

  • 这是一个关于 jQuery Validate 的问题...所以展示你的 jQuery/JavaScript。
  • 顺便说一句,class="control-group error" 实际上包含 两个 类,.control-group.error

标签: twitter-bootstrap jquery-validate


【解决方案1】:

使用 errorClass 选项将 jQuery Validate 插件设置为您想要的 class 以防出错。这将在验证错误时同时应用 .control-group.error 类...

$(document).ready(function () {
     // initialize the plugin
     $("#inputForm").validate({ 
         errorClass: "control-group error"
     });
});

http://jsfiddle.net/F28PF/1/

插件选项见文档:http://jqueryvalidation.org/validate


编辑

正如所指出的,默认行为将errorClass 放在消息和input 元素上。

如果您需要在其他东西上切换错误/有效类,您可以利用 highlightunhighlight 回调函数。

$(document).ready(function () {
    // initialize the plugin
    $("#inputForm").validate({
        errorClass: "control-group error",
        highlight: function (element, errorClass, validClass) {
            $(element).closest(".control-group").addClass(errorClass).removeClass(validClass);
        },
        unhighlight: function (element, errorClass, validClass) {
            $(element).closest(".control-group").addClass(validClass).removeClass(errorClass);
        }
    });
});

【讨论】:

  • 这不是在输入标签中添加 .control-group 和 .error 吗?这不是一种非常适合引导程序的方式来执行此操作。为什么不将错误添加到包装输入的控制组中呢?
  • @Ryan,是的,它将类添加到 input 元素,因为这是默认插件行为。如我的编辑所述,要在另一个元素上切换类需要使用 highlightunhighlight
【解决方案2】:

要按照 bootstrap 的预期使用方式使用控制组,您需要设置周围控制组的值。接受的答案并不完全正确,您不想将控制组放在输入本身,而是放在容器上。这段代码应该可以工作。

$("#page-form").validate({
        highlight: function (element, errorClass, validClass) {
            $(element).closest(".control-group").addClass(errorClass).removeClass(validClass);
        },
        unhighlight: function (element, errorClass, validClass) {
            $(element).closest(".control-group").addClass(validClass).removeClass(errorClass);
        }
    });

【讨论】:

  • 完美,这是将类添加到已经存在的.control-group
  • 不知道为什么投反对票。如果您按照他们打算使用的方式使用引导程序,那么这是更可取的方法。它将确保标签和字段通过类着色。
猜你喜欢
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 2013-05-23
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多