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
相关产品推荐
相关产品推荐

