You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的BootBox内元素无法访问、表单验证不生效?

我无法访问BootBox弹窗内的任意元素,尝试过重命名所有字段,但表单既不触发校验,也无法获取输入值:
问题截图

我的BootBox代码(包含部分调试尝试)如下:

$(document).on("click", "#btnNew", function () {
    //$("#btnNew").click(function () {
        var form = $("#newSubjectCard").html();
        bootbox.dialog({
            message: form,
            title: "Add New Subject",
            buttons: {
                close: {
                    label: 'Cancel',
                    className: "btn btn-sm btn-danger",
                    callback: function () { }
                },
                success: {
                    label: "Add Subject",
                    className: "btn btn-sm btn-primary",
                    callback: function () {
                        if ($("#newSubjectName").val() == "" || $("#newSubjectEmail").val() == "") {
                            console.log($("#newSubjectName").val());
                            console.log($("#newSubjectEmail").val());
                            console.log("Fail");
                            
                            return false;  // 保持弹窗不关闭
                        } else {
                            //addCustomer();
                            console.log($("#newSubjectName").val());
                            console.log($("#newSubjectEmail").val());
                            //console.log("tried to submit");
                        }
                    }
                }
            }
        });

        $("#addCustomer").validate({
            // 定义校验规则
            rules: {
                newSubjectName: "required",
                newSubjectEmail: {
                    required: true,
                    email: true
                }
            },
            messages: {
                newSubjectName: "请输入姓名",
                newSubjectEmail: "请输入合法的邮箱地址"
            },
            submitHandler: function (form) {
                console.log("submitted");
            }
        });
    //});
})

我的Form表单代码如下:

<div id="newSubjectCard" class="d-none">
    <form id="addCustomer">
        <div class="form-row">
            <div class="col-auto">
                姓名:
                <input type="text" id="newSubjectName" name="newSubjectName" class="form-control" placeholder="JANE DOE">
            </div>
        </div>
        <div class="form-row">
            <div class="col-auto">
                邮箱:
                <input type="text" id="newSubjectEmail" name="newSubjectEmail" class="form-control" placeholder="JANE.DOE@GMAIL.COM">
            </div>
        </div>
        <div class="form-row">
            <div class="col-auto">
                分组:
                <input type="text" id="newSubjectGroup" name="newSubjectGroup" class="form-control" placeholder="MR. JOHNS CLASS">
            </div>
        </div>
    </form>
</div>

我对着页面排查了很久毫无头绪,提前感谢大家的帮助!


更新

我已将表单代码直接写在JS中避免ID重复,问题已解决,感谢所有人的帮助。修复后的代码如下:

var form = `<div id="newSubjectCard">
                            <form id="addCustomer">
                                <div class="form-row">
                                    <div class="col-auto">
                                        姓名:
                                        <input type="text" id="newSubjectName" name="newSubjectName" class="form-control" placeholder="JANE DOE">
                                    </div>
                                </div>
                                <div class="form-row">
                                    <div class="col-auto">
                                        邮箱:
                                        <input type="text" id="newSubjectEmail" name="newSubjectEmail" class="form-control" placeholder="JANE.DOE@GMAIL.COM">
                                    </div>
                                </div>
                                <div class="form-row">
                                    <div class="col-auto">
                                        分组:
                                        <input type="text" id="newSubjectGroup" name="newSubjectGroup" class="form-control" placeholder="MR. JOHNS CLASS">
                                    </div>
                                </div>
                            </form>
                        </div>`;
            bootbox.dialog({
                message: form,
                title: "Add New Subject",
                buttons: {
                    close: {
                        label: 'Cancel',
                        className: "btn btn-sm btn-danger",
                        callback: function () { }
                    },
                    success: {
                        label: "Add Subject",
                        className: "btn btn-sm btn-primary",
                        callback: function () {
                            if ($("#newSubjectName").val() == "" || $("#newSubjectEmail").val() == "") {
                                console.log($("#newSubjectName").val());
                                console.log($("#newSubjectEmail").val());
                                console.log("Fail");
                                $("#addCustomer").valid;

                                return false;  // 保持弹窗不关闭

                            } else {
                                //addCustomer();
                                console.log($("#newSubjectName").val());
                                console.log($("#newSubjectEmail").val());
                                //console.log("tried to submit");
                            }
                        }
                    }
                }

内容的提问来源于stack exchange,提问作者flashsplat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:57:00