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

jQuery.validate无法验证嵌套表单,如何定位frmPartialBusinessProfile?

嵌套表单下Kendo验证的解决方法

问题根源是HTML规范不允许表单嵌套,浏览器解析时会自动修正DOM结构——要么把内层的frmPartialBusinessProfile移出外层表单,要么直接忽略它的存在,导致你用$('#frmPartialBusinessProfile')找不到目标元素,自然无法调用valid()。

给你几个可行的解决思路:

  • 放弃表单嵌套结构,把内层<form id="frmPartialBusinessProfile">改成普通<div>容器,然后给这个容器单独初始化Kendo Validator:

    // 初始化验证器
    var partialValidator = $("#frmPartialBusinessProfile").kendoValidator().data("kendoValidator");
    // 执行验证
    if (partialValidator.validate()) {
        // 验证通过后的逻辑
    }
    

    这种方式不需要依赖表单标签,只要容器内的表单控件有对应的验证属性(比如required、data-val-*)就能正常工作。

  • 如果需要保留两个表单的独立提交逻辑,不要嵌套放置,把frmPartialBusinessProfile放在frmMain的外面,通过Kendo Wizard的步骤切换来控制显示。这样两个表单都是独立的DOM节点,不会被浏览器干扰,直接调用$('#frmPartialBusinessProfile').valid()就能正常验证。

  • 若必须保留原有结构的视觉嵌套,直接针对内层的表单控件组初始化验证,跳过表单标签的依赖:

    var validator = $("#frmPartialBusinessProfile").kendoValidator({
        rules: {
            // 自定义验证规则示例
            customRule: function(input) {
                if (input.is("[data-custom-rule]")) {
                    return input.val().length > 5;
                }
                return true;
            }
        },
        messages: {
            customRule: "输入内容长度必须大于5"
        }
    }).data("kendoValidator");
    
    // 触发验证
    var isValid = validator.validate();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:51:04