使用Javascript / jQuery进行Bootstrap 4表单验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Javascript / jQuery进行Bootstrap 4表单验证相关的知识,希望对你有一定的参考价值。

我是Web开发的新手,我正在尝试设置练习表来学习表单验证。我正在关注Bootstrap的doc for Custom Styles来处理那些使用屏幕阅读器的可访问性问题,并为不同浏览器的用户标准化验证外观。

我已经设置了一个基本表单,并尝试使用jQuery创建一个javascript函数来处理验证。我觉得我几乎就在那里,但仍然没有像Bootstrap演示显示那样进行验证。

的index.html

<form id="signup-form" novalidate>

  <div class="form-group">
    <h1>Sign Up</h1>
    <p>Use this form to enter your name and email to sign up.</p>
  </div>

  <!-- Name -->
  <div class="form-group">
    <div class="row">
      <div class="col">
        <label for="firstNameInput">Name</label>
        <input type="text" class="form-control" id="firstNameInput" placeholder="First name" required>
        <div class="valid-feedback">
          Looks good!
        </div>
      </div>
      <div class="col">
        <label for="lastNameInput">Last</label>
        <input type="text" class="form-control" id="lastNameInput" placeholder="Last name" required>
        <div class="valid-feedback">
          Looks good!
        </div>
      </div>
    </div>
  </div>

  <!-- Email -->
  <div class="form-group">
    <label for="emailAddressInput">Email address</label>
    <input type="email" class="form-control" id="emailAddressInput" aria-describedby="emailHelp" placeholder="name@example.com" required>
    <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
    <div class="invalid-feedback">
      Please provide a valid email.
    </div>
  </div>

  <!-- Options -->
  <div class="form-group">
    <div class="form-check">
      <input class="form-check-input" type="radio" name="Radios" id="type1RadioButton" value="option1" checked>
      <label class="form-check-label" for="type1RadioButton">
        Type 1 user
      </label>
    </div>
    <div class="form-check">
      <input class="form-check-input" type="radio" name="Radios" id="type2RadioButton" value="option2">
      <label class="form-check-label" for="type2RadioButton">
        Type 2 user
      </label>
    </div>
  </div>

  <!-- Submit Button -->
  <div class="form-group">
    <a href="#" class="btn btn-primary" id="submitButton" type="submit">Submit</a>
  </div>

</form>

的script.js

$(document).ready(function() {
  $("#submitButton").click(function() {

    //Fetch form to apply custom Bootstrap validation
    var form = $("#signup-form")
    //alert(form.prop('id')) //test to ensure calling form correctly

    if (form.checkValidity() === false) {
      event.preventDefault()
      event.stopPropagation()
    }
    form.addClass('was-validated')
  })
})
答案

问题是checkValidity()存在于第一个表单节点上,而不是表单上。

改变这个:form.checkValidity() === false

对此:form[0].checkValidity() === false

它起作用:https://www.codeply.com/go/pUPBLzn6yL

$(document).ready(function() {
  $("#submitButton").click(function() {

    //Fetch form to apply custom Bootstrap validation
    var form = $("#signup-form")
    alert(form.prop('id')) //test to ensure calling form correctly

    if (form[0].checkValidity() === false) {
      event.preventDefault()
      event.stopPropagation()
    }
    form.addClass('was-validated');

    //Make ajax call here

  })
})

有关Bootstrap 4验证的更多信息: Can't make the validation work in Bootstrap 4

以上是关于使用Javascript / jQuery进行Bootstrap 4表单验证的主要内容,如果未能解决你的问题,请参考以下文章

平滑滚动到锚点

前端开发之jQuery效果篇

jquery中checkbox的全选与反选

使用 JavaScript / jQuery 进行简单的数字验证

jQuery获取 input checkbox 被选中的值

如何防止使用 jQuery 或 Javascript 进行双重提交?