如何解决使用KnockoutJS和Jquery对话框时,jQuery验证失败
|| 我有一个使用MVC3中的html.RenderAction呈现的表单。 除此之外,我还有一个与淘汰赛一起使用的jquery模板。使用默认的\'data-val-required \'属性将模型正确呈现到视图中。 但是我注意到jQuery验证总是返回true。<div id=\"dlgAdd\" data-bind=\"template: { name: \'editTemplate\',data: selected }\">
</div>
<script id=\"editTemplate\" type=\"text/html\">
<div>
@{
Html.RenderAction(\"EditDialog\");
}
</div>
</script>
EditDialog部分呈现以下输出,如下所示:
<form method=\"post\" id=\"frmAddNew\" action=\"/Project/AddNew\">
<div class=\"fields-inline\">
<div class=\"editor-label\">
<label for=\"Name\">Name</label>
</div>
<div class=\"editor-field\">
<input data-val=\"true\" data-val-required=\"The Name field is required.\" id=\"Name\" name=\"ko_unique_41\" value=\"\" type=\"text\">
<span class=\"field-validation-valid\" data-valmsg-for=\"Name\" data-valmsg-replace=\"true\"></span>
</div>
</div>
<span id=\"validationmessage\" class=\"field-validation-error\"></span>
</form>
但是,当我调用$(\"#frmAddNew\").valid())
时,它总是返回\'true \'。
我不知道是否它的淘汰赛,jQuery或mvc阻止了验证返回false。
解决方法
尝试调用
$.validator.unobtrusive.parse(yourFormElement)
以获取与解析相关的data-
属性。
您可以像这样触发它:
<div id=\"dlgAdd\" data-bind=\"template: { name: \'editTemplate\',data: selected,afterRender: hookUpValidation }\">
</div>
然后,hookUpValidation看起来像:
hookUpValidation: function(nodes) {
$.validator.unobtrusive.parse(nodes[0]);
}
,我研究了jQuery validate的代码,我认为它不适用于动态添加的表单(Knockout可以做到)。
看看这个> Jquery Validation插件,动态表单验证
您需要在使用jQuery live()方法注册的事件处理程序中调用validate()方法。 live方法也链接到所有动态添加的元素。
让我知道它是否有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。