我有一个通过剑道验证器验证的表单,除了通常标记无效字段之外,我还需要在表单无效时执行一些操作。不幸的是,除非整个表单有效,否则似乎有些东西会阻止通过提交方法绑定(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/