.submit函数在使用kendo验证器无效时未运行

.submit function not running when invalid with kendo validator

本文关键字:无效 运行 验证 kendo 函数 submit      更新时间:2023-09-26

我有一个通过剑道验证器验证的表单,当表单无效时,除了通常标记无效字段外,我还需要一些事情来处理。不幸的是,除非整个表单都是有效的,否则通过submit方法绑定的函数似乎会被阻止。

例如,这种行为似乎发生在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块在表单上所有内容都已填写且有效时运行,但else块从不激发。事实上,插入一些alerts()表明,除非整个表单有效,否则整个函数不会运行。这似乎与submit方法的jQuery文档形成了对比(https://api.jquery.com/submit/),其中功能类似的函数在任何提交尝试中运行。我唯一能猜测的是,剑道验证器的某些东西阻止了这种情况的发生,但我似乎无法找到替代方案。

看起来kendo会在单击按钮时自动验证表单,而当验证失败时,kendo会停止事件传播,jquery submit也不会启动。

您可以将按钮替换为锚点:

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

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

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

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

status2 = $(".status");

看看如何正确建立"规则"

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