使用 Jquery 时引导验证不起作用

Posted

技术标签:

【中文标题】使用 Jquery 时引导验证不起作用【英文标题】:Bootstrap Validation Not Working when using Jquery 【发布时间】:2018-08-22 14:15:03 【问题描述】:

我的 Bootstrap 验证在表单控件中运行良好,见下图

我的代码是:

<form role="form" data-toggle="validator" id="myform">
            <div class="form-group">
                <div class="row">
                    <div class="col-md-3">
                        <div class="form-group">

                            <select class="selectpicker" data-live-search="true" title="Select Teacher" id="ddlMultiTeacher" style="background-color: white" required>
                                <%--<option value="">None</option>--%>
                            </select>
                        </div>
                    </div>

                    <div class="col-md-3">
                        <div class="form-group">

                            <select class="selectpicker" data-live-search="true" title="Select Subject" id="ddlMultiSubject" style="background-color: white" required>
                            </select>
                        </div>
                    </div>
                </div>
                <br />
                <div class="row">
                    <div class="col-md-3">
                        <div class="form-group">

                            <select class="selectpicker" data-live-search="true" title="Select Class" id="ddlMultiClass" style="background-color: white" required>
                            </select>
                        </div>
                    </div>

                    <div class="col-md-3">
                        <div class="form-group">

                            <select class="selectpicker" data-live-search="true" title="Select Section" id="ddlMultiSection" style="background-color: white" required>
                            </select>
                        </div>
                    </div>
                </div>
                <br />
                <div class="row">
                    <div class="col-md-2">
                        <%--                    <button  id="btnSubmit2" class="btn btn-primary btn-block">Save</button>--%>
                        <input id="btnGenerateSchedule" class="btn btn-primary btn-block" type="submit" value="Save" />
                    </div>
                </div>
            </div>
        </form>

但每当我通过 jquery 使用我的按钮提交代码时,我的验证就会停止工作。

$('#btnGenerateSchedule').click(function (e) 
    debugger;
    e.preventDefault();

    bootbox.confirm("<b>Are you sure?</b>", function (result) 
        if (result) 
            GenerateSchedule();
            //bootbox.alert(
            //    title: "Alert",
            //    message: "Your Schedule Has Been Generated !"
            //)
         else 
            //console.log("User declined dialog");
        
    );
)

谁能告诉我我做错了什么?我错过了一些插件吗?

【问题讨论】:

【参考方案1】:

当您编写 jquery 提交或单击事件时,引导或 html 验证不起作用。如果您希望 html/bootstrap 验证应该在 jquery click/submit 事件之前工作,请执行以下操作:

$('#btnGenerateSchedule').click(function (e) 
if($("form")[0].checkValidity())
    debugger;
    e.preventDefault();

    bootbox.confirm("<b>Are you sure?</b>", function (result) 
       if (result) 
           GenerateSchedule();
        else 
        //console.log("User declined dialog");
       
    );
       );

$("form")[0]) 取决于页面中的表单。如果是页面中的第一个表单,那么 form[0],如果是页面中的第二个表单,那么 $("form")1) 等等。

详情可以访问链接:html and jquery validation together

【讨论】:

【参考方案2】:

试试这个,

$('form').on('click','#btnGenerateSchedule',function (e) 
debugger;
e.preventDefault();

bootbox.confirm("<b>Are you sure?</b>", function (result) 
    if (result) 
        GenerateSchedule();
        //bootbox.alert(
        //    title: "Alert",
        //    message: "Your Schedule Has Been Generated !"
        //)
     else 
        //console.log("User declined dialog");
    
);
)

【讨论】:

以上是关于使用 Jquery 时引导验证不起作用的主要内容,如果未能解决你的问题,请参考以下文章

引导验证(成功)后,表单使用默认方法而不是 ajax 提交。 e.preventDefault() 不起作用?

使用带括号的 php 字段时,jQuery 验证不起作用

使用 Angular js 验证 jquery 下拉插件不起作用

Jquery位置选择器自动完成在引导模式中不起作用

Jquery 选择器在引导模式下不起作用(使用 codeigniter 加载表单)

引导模式在 laravel 中不起作用