javascript - 当剑道验证器无效时,.submit 函数不会运行

标签 javascript jquery kendo-ui kendo-grid

我有一个通过剑道验证器验证的表单,除了通常标记无效字段之外,我还需要在表单无效时执行一些操作。不幸的是,除非整个表单有效,否则似乎有些东西会阻止通过提交方法绑定(bind)的函数触发。

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

最佳答案

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

您可以用 anchor 替换按钮:

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

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

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

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

status2 = $(".status");

关于javascript - 当剑道验证器无效时,.submit 函数不会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33882526/

相关文章:

javascript - Highcharts 导出菜单没有完全显示

javascript - 为数据表中的行添加 id

javascript - 单击 anchor 标记时获取父级 <th> 的属性值

html - Kendo UI bundle 在 IIS 中不起作用

javascript - Kendo DropDownList 焦点上的工具提示

javascript - 返回按钮不会重新触发主干应用程序

javascript - Angular TinyMCE 集成

javascript - LocalStorage 值未显示在其他 html 页面中

javascript - 第一张图片不显示在 JS/JQUERY 幻灯片中

kendo-ui - Kendoui Treeview 节点双击事件编辑