无法在 Bootstrap 中进行验证

Can't make the validation work in Bootstrap

我正在尝试实施 validation by Bootstrap 并且我已将以下示例粘贴到我的页面上:

<div class="form-group has-success">
  <label class="form-control-label" for="inputSuccess1">Input with success</label>
  <input type="text" class="form-control form-control-success" id="inputSuccess1">
  <div class="form-control-feedback">Success! You've done it.</div>
  <small class="form-text text-muted">Example help text that remains unchanged.</small>
</div>

我可以看到输入控件的外观发生了变化(它有点圆润,现在更美观了)但是它仍然没有像以前那样显示绿色边框在链接到的页面上可以看到。我链接到的 Bootstrap 指出如下。

<link rel="stylesheet"
      href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" />

我已尝试 google 解决此问题,但无济于事。我有 a fiddle illustrating the issue.

我该怎么办?我错过了什么?

Bootstrap 5(2021 年更新)

由于 Bootstrap 5 不再需要 jQuery,因此可以轻松地使用 vanilla JavaScript 进行客户端验证。该文档包含一个通用代码示例,该示例适用于所有带有 needs-validation..

的表单
(function () {
    'use strict'

    // Fetch all the forms we want to apply custom Bootstrap validation styles to
    var forms = document.querySelectorAll('.needs-validation')

    // Loop over them and prevent submission
    Array.prototype.slice.call(forms)
        .forEach(function (form) {
        form.addEventListener('submit', function (event) {
            if (!form.checkValidity()) {
            event.preventDefault()
            event.stopPropagation()
            }

            form.classList.add('was-validated')
        }, false)
        })
})()

Bootstrap 5 Form Validation Demo

Bootstrap 4(原答案)

Bootstrap 4 beta release 起验证已更改。

有效的状态选择器使用 was-validated class,它将在通过 客户端 JavaScript 验证表单后动态添加。例如...

<form class="container was-validated" novalidate="">
    <div class="form-group">
        <label class="form-control-label" for="inputSuccess1">Input with success</label>
        <input type="text" class="form-control" name="i1" id="inputSuccess1">
        <div class="valid-feedback">Success! You've done it.</div>
    </div>
    <div class="form-group">
        <label class="form-control-label" for="inputSuccess2">Input with danger</label>
        <input type="text" class="form-control" name="i2" required="" id="inputSuccess2">
        <div class="invalid-feedback">That didn't work.</div>
    </div>
    <div class="">
        <button type="submit" class="btn btn-secondary">Text</button>
    </div>
</form>

https://codeply.com/go/45rU7UOhFo

Form Validation Example Demo - Bootstrap 4.0.0


如文档中所述,如果您打算使用 服务器端 验证,您只需设置 is-validis-invalid class 在表单控件上...

<form class="container">
    <div class="form-group">
        <label class="form-control-label" for="inputSuccess1">Input with success</label>
        <input type="text" class="form-control is-valid" id="inputSuccess1">
        <div class="valid-feedback">Success! You've done it.</div>
    </div>
</form>

在 Bootstrap 4 的最终发布版本中似乎再次更改了验证:http://getbootstrap.com/docs/4.0/components/forms/#validation

比我想象的要复杂

推荐自定义样式客户端验证:

  1. 验证后,表单会添加一个名为 was-validated 的 class。
  2. 反馈消息包含在 .valid-feedback.invalid-feedback 中。

对于服务器端验证:

  1. <form> 标签上不需要 was-validated class。
  2. 在输入控件上添加.is-valid.is-invalid
  3. 反馈消息添加.invalid-feedback.valid-feedback

我的简单方法....

<input type="text" class="form-control" id="unombre" 
placeholder="su nombre"  name="vnombre" required 
onblur="valida(this.id)">

<script>
function valida(v) {
var dato = document.getElementById(v).value
document.getElementById(v).className +=' is-valid';
}
</script>