【问题标题】:JQuery Validate Form Inputs & Highlight Labels with Bootstrap 4 [duplicate]JQuery 使用 Bootstrap 4 验证表单输入和突出显示标签 [重复]
【发布时间】:2018-09-20 13:22:59
【问题描述】:

我读过我读过Bootstrap with jQuery Validation Plugin 这很有帮助,但它是 Bootstrap 3,不是 Bootstrap 4..

我将JQuery ValidateBootstrap 4 一起使用,但当标签 输入字段无效时,似乎无法将highlight 设为红色。

我认为 validinvalid 输入类在 BS 中是默认的,link?可能是我用错了。

我的代码如下,这里是fiddle

HTML

<form id="myform">
  <div class="row">
    <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6">
      <div class="form-group">
        <label for="name" class="control-label">Email address</label>
        <input type="text" class="form-control" id="name" name="name" placeholder="Name" required>
      </div>
    </div>
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

JQuery

$(function() {
  $("#myform").validate({
    rules: {
      name: {
        required: true,
        minlength: 2
      }
    },
    highlight: function(element) {
      $(element).closest('.form-group').removeClass('valid').addClass('invalid');
    },
    unhighlight: function(element) {
      $(element).closest('.form-group').removeClass('invalid').addClass('valid');
    },
  });
})

感谢任何帮助。

【问题讨论】:

    标签: javascript jquery twitter-bootstrap bootstrap-4 jquery-validate


    【解决方案1】:

    the most recent release 中的这些类已更改。 valid 被重命名为 is-validinvalidis-invalid

    此外,它们需要应用于输入,而不是输入组包装器。

    编辑:

    如果要突出显示输入和标签,则需要重新排序。

    $(function() {
      $("#myform").validate({
        rules: {
          name: {
            required: true,
            minlength: 2
          }
        },
        highlight: function(element) {
          $(element).removeClass('is-valid').addClass('is-invalid');
        },
        unhighlight: function(element) {
          $(element).removeClass('is-invalid').addClass('is-valid');
        },
      });
    })
    .reversed{padding: 3rem 0 0 0;}
    .reversed .control-label{margin: -4.5rem 0 0 0; float: left;}
    
    input.is-valid ~ label{color: green;}
    input.is-invalid ~ label{color: red;}
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
    
    <form id="myform">
      <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-6 col-lg-6">
          <div class="form-group reversed"><!-- added reversed class -->
            <input type="text" class="form-control" id="name" name="name" placeholder="Name" required>
            <label for="name" class="control-label">Email address</label>
          </div>
        </div>
      </div>
      <button type="submit" class="btn btn-primary">Submit</button>
    </form>

    【讨论】:

    • @TheOrdinaryGeek 是的,刚刚添加了一个示例。
    • @TheOrdinaryGeek 如果你想这样做,你可以写更多javascript 或者你可以在css 中进行。 bootstrap 中也没有内置方法来突出显示标签。
    猜你喜欢
    • 1970-01-01
    • 2018-11-20
    • 2018-08-25
    • 2014-08-17
    • 2018-07-25
    • 1970-01-01
    • 2013-06-16
    • 2017-09-22
    • 1970-01-01
    相关资源
    最近更新 更多