Javascript KendoValidator需要的字段不是';实际上不需要

Javascript KendoValidator需要的字段不是';实际上不需要,javascript,jquery,model-view-controller,kendo-ui,telerik,Javascript,Jquery,Model View Controller,Kendo Ui,Telerik,我有一个字段不是必需的,如下代码所示。当我点击save以发布表单数据时,我会收到剑道错误消息,该消息只会验证它是否是正确的zipcode(可以为空)。它还显示了当我从字段中移出制表符时的错误消息,这不是我要查找的。任何帮助都会很好,谢谢 HTML: 型号: [Display(Name = "Zip Code")] [RegularExpression(@"^\d{5}(-\d{4})?$", ErrorMessage = "Invalid Zip Code")] public s

我有一个字段不是必需的,如下代码所示。当我点击save以发布表单数据时,我会收到剑道错误消息,该消息只会验证它是否是正确的zipcode(可以为空)。它还显示了当我从字段中移出制表符时的错误消息,这不是我要查找的。任何帮助都会很好,谢谢

HTML:

型号:

[Display(Name = "Zip Code")]
    [RegularExpression(@"^\d{5}(-\d{4})?$", ErrorMessage = "Invalid Zip Code")]
    public string ZipCode { get; set; }

您需要将剑道验证器属性“validateOnBlur”设置为false(默认为true),以便在用户离开时跳过验证

$(document).ready(function () {
    $("#Form").kendoValidator({
       validateOnBlur: false
     });
});
此外,我会在输入标记中使用“validationMessage”而不是“data val regex”,以及使用“pattern”而不是“data val regex pattern”

最后,如果省略“required”属性,则允许用户将字段留空


我创建了一个Dojo,其中有一个工作示例:

我找到了答案。这实际上不是剑道问题,而是正则表达式问题

Regex需要一个字段,但我的Regex数据批注不接受空字符串:

    [RegularExpression(@"^\d{5}(-\d{4})?$", ErrorMessage = "Invalid Zip Code")]
我在正则表达式的末尾添加了^$,解决了我的问题

[RegularExpression(@"^\d{5}(-\d{4})?|^$", ErrorMessage = "Invalid Zip Code")]

什么是enableButton()?我想还有一些代码我们在这里看不到?这是一些非常好的信息,我将在未来使用。让我问你,为什么选择validationMessage和pattern?还有,您将如何实施它们?由于“我的模型”中的数据批注,正在添加data val regex和data val regex模式属性。在这种情况下,如果它们适用于您,您可能希望继续使用它们。在我的例子中,我无法让它工作。根据Telerik的示例,我必须使用“模式”和“验证消息”:
    [RegularExpression(@"^\d{5}(-\d{4})?$", ErrorMessage = "Invalid Zip Code")]
[RegularExpression(@"^\d{5}(-\d{4})?|^$", ErrorMessage = "Invalid Zip Code")]