.submit 函数不是 运行 当与 kendo 验证器无效时

.submit function not running when invalid with kendo validator

我有一个通过 kendo 验证器验证的表单,除了通常标记无效字段之外,我还需要在表单无效时发生一些事情。不幸的是,除非整个表单有效,否则似乎有些东西会阻止通过提交方法绑定的函数被触发。

例如,这种行为似乎出现在 Telerik 自己的演示之一中: http://demos.telerik.com/kendo-ui/validator/index

它包含代码:

var validator = $("#ticketsForm").kendoValidator().data("kendoValidator"),
status = $(".status");

$("form").submit(function(event) {
    event.preventDefault();
    if (validator.validate()) {
        status.text("Hooray! Your tickets has been booked!")
            .removeClass("invalid")
            .addClass("valid");
    } else {
        status.text("Oops! There is invalid data in the form.")
            .removeClass("valid")
            .addClass("invalid");
    }
});

if 块 运行s 当表单上的所有内容都已填写且有效时,但 else 块永远不会触发。事实上,插入一些 alerts() 表明整个函数不会 运行 除非整个表单有效。这似乎与提交方法 (https://api.jquery.com/submit/) 的 jQuery 文档形成对比,其中功能相似的函数 运行s 在任何提交尝试中。我唯一能猜到的是 kendo 验证器阻止了这种情况的发生,但我似乎无法找到替代方案。

看看如何正确建立"rules"

http://docs.telerik.com/kendo-ui/framework/validator/overview#error-messages

看起来 kendo 在单击按钮和验证失败时自动验证表单,kendo 停止事件传播并且 jquery 提交未触发。

您可以用锚点替换按钮:

<a id="buttonSubmit" class="k-button k-primary">Submit</a>

然后绑定点击事件手动验证:

$("#buttonSubmit").click(function(event) {...

并重命名status变量,因为它是保留字:

status2 = $(".status");