【问题标题】:Can't make the validation work in Bootstrap无法在 Bootstrap 中进行验证
【发布时间】:2018-02-06 21:16:33
【问题描述】:

我正在尝试实现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" />

我曾尝试用谷歌搜索此问题,但无济于事。我有a fiddle illustrating the issue

我能做些什么呢?我错过了什么?

【问题讨论】:

    标签: html twitter-bootstrap validation bootstrap-4 bootstrap-5


    【解决方案1】:

    引导程序 5(2021 年更新)

    由于 Bootstrap 5 不再需要 jQuery,因此使用原生 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

    引导程序 4(原始答案)

    Bootstrap 4 beta release 起,验证已更改。

    有效的状态选择器使用was-validated 类,该类将在通过客户端 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 表单控件上的类...

    <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's validation docs,我无法进行客户端验证,直到我注意到(检查员)该文档页面中有一个脚本,这是制作它的脚本工作,我的意思是除了核心 bootstrap.js 和 jquery.js,确实,当我将它添加到我的项目时,它确实有效。真的是这样吗?我真的需要手动添加那段代码,因为我是告诉你,没有它就行不通,不在我的项目中,也不在文档中。我不能在这里发布脚本,但它在我链接的文档中,就在表单标签之后
    • 不敢相信这是多么难以找到。文档根本没有明确说明您需要一个小事件处理程序来添加类(«您可以选择何时激活它们(通常在尝试提交表单后)»)。感谢您的回答!
    • 如何在不替换was-validate的情况下结合客户端和服务器端?
    • 为什么不给css文件的链接呢?
    • @pajarnas -- 什么 CSS 文件?
    【解决方案2】:

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

    事情变得比我想象的要复杂。

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

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

    对于服务器端验证:

    1. &lt;form&gt; 标签上不需要 was-validated 类。
    2. 在输入控件上添加.is-valid.is-invalid
    3. 添加.invalid-feedback.valid-feedback作为反馈信息。

    【讨论】:

    • 我认为表单不需要有需要验证类,这只是在引导文档上,但没有做任何事情。
    • 说“不需要was-validated”是不够的。我会说,“如果您希望服务器端验证正常工作,请不要添加was-validated...您不能同时使用两者。您可以将客户端与was-validated 一起使用,或者您使用is-invalid/ is-valid 通过从服务器端代码添加它。
    • 请注意,根据文档中的example code(滚动到代码块底部),客户端Javascript需要在提交表单时添加was-validated类!否则,什么都不会显示!
    【解决方案3】:

    我的简单方法....

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      相关资源
      最近更新 更多