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

Kendo表单自定义required验证函数不生效该如何正确配置?

问题原因

Kendo UI 表单验证中,required 规则传布尔值和传函数的逻辑完全不同:

  • 传布尔值 true 时,是启用内置的必填校验逻辑,会自动判断字段值是否为空,为空则触发校验失败
  • 传函数时,该函数会作为自定义校验规则执行,函数返回 true 代表校验通过,返回 false 代表校验失败。你当前的写法直接固定返回 true,所以不管字段有没有填都会判定为校验通过,自然不会触发必填提示。

解决方案

如果需要通过函数动态控制必填规则,需要在校验函数内先判断当前场景是否需要必填,再对应校验字段值是否合法。针对MultiSelect控件的示例写法如下:

validation: {
  required: function(input) {
    // 此处替换为你自己的动态判断逻辑,决定当前是否需要必填
    const isRequired = true;
    
    // 不需要必填时直接返回校验通过
    if (!isRequired) return true;

    // 针对MultiSelect控件,判断选中值是否为空数组
    if (input.data("role") === "multiselect") {
      const multiSelectInst = input.data("kendoMultiSelect");
      return multiSelectInst.value().length > 0;
    }

    // 普通输入框的必填判断逻辑
    return input.val().trim() !== "";
  },
  // 可选:自定义校验失败提示文本
  messages: {
    required: "MultiSelect is required"
  }
}

如果只是简单动态开关必填,不需要额外自定义校验逻辑,直接给required传布尔变量即可,写法更简洁:

// 根据你的业务逻辑动态得到是否需要必填
const needRequired = checkBusinessCondition() ? true : false;

// 表单配置
validation: {
  required: needRequired
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:39:03