本文应用Bootstrap4.4.1版本。
在用Bootstrap进行表单验证时,须要给form增加class="needs-validation"和novalidate属性。

<form action="" class="needs-validation" novalidate>    <div class="form-group row">        <label for="title" class="col-md-2 col-sm-3 col-4 col-form-label text-right"><span class="text-danger">*</span> 商品名称</label>        <div class="col-sm-8 col-8">            <input type="text" class="form-control" id="title" name="title" placeholder="请输出" required>            <div class="invalid-feedback">请输出商品名称</div>        </div>    </div>    <div class="form-group row">        <label for="subtitle" class="col-md-2 col-sm-3 col-4 col-form-label text-right"><span class="text-danger">*</span> 商品分类</label>        <div class="col-sm-8 col-8">            <select name="type" class="form-control" value="" id="type" required>                <option value="">请抉择</option>                <option value="1">美容护肤</option>                <option value="2">服饰鞋帽</option>                <option value="3">电子产品</option>                <option value="4">日用百货</option>            </select>            <div class="invalid-feedback">请抉择商品分类</div>        </div>    </div>    <div class="form-group row">        <label for="title" class="col-md-2 col-sm-3 col-4 col-form-label text-right"><span class="text-danger">*</span> 商品信息</label>        <div class="col-sm-8 col-8">            <textarea class="form-control" name="info" cols="30" rows="10" required></textarea>            <div class="invalid-feedback">请输出商品信息</div>        </div>    </div>    <div class="form-group row">        <div class="col-sm-8 col-8 offset-md-2 offset-sm-3 offset-4">            <button type="submit" class="btn btn-primary">确 定</button>        </div>    </div></form>

还有如下js代码:

$(function() {    // bootstrap 表单验证    var forms = document.getElementsByClassName('needs-validation');    // Loop over them and prevent submission    var validation = Array.prototype.filter.call(forms, function(form) {      form.addEventListener('submit', function(event) {        if (form.checkValidity() === false) {            // 滚动到第一个验证失败的地位            var invalidDom = $('.needs-validation .form-control:invalid');            invalidDom[0].scrollIntoView(true);            event.preventDefault();            event.stopPropagation();        }        form.classList.add('was-validated');      }, false);    });})

如果须要验证后滚动到第一个失败的地位只需增加两行代码,invalidDom可依据本人我的项目做适当调整。

// 滚动到第一个验证失败的地位var invalidDom = $('.needs-validation .form-control:invalid');invalidDom[0].scrollIntoView(true);