jaf*_*ffa 5 jquery jquery-ui asp.net-mvc-3 knockout.js
我有一个在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>
Run Code Online (Sandbox Code Playgroud)
EditDialog partial呈现以下输出:
<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>
Run Code Online (Sandbox Code Playgroud)
但是,当我打电话时$("#frmAddNew").valid()),它总是返回'true'.我不知道它的淘汰赛,jQuery或mvc是否阻止验证返回false.
尝试调用$.validator.unobtrusive.parse(yourFormElement)以获取data-与解析验证相关的属性.
你可以触发它:
<div id="dlgAdd" data-bind="template: { name: 'editTemplate', data: selected, afterRender: hookUpValidation }">
</div>
Run Code Online (Sandbox Code Playgroud)
然后,hookUpValidation看起来像:
hookUpValidation: function(nodes) {
$.validator.unobtrusive.parse(nodes[0]);
}
Run Code Online (Sandbox Code Playgroud)