使用 KnockoutJS 和 Jquery 对话框时 jQuery 验证失败 [英] jQuery validation fails when using KnockoutJS and Jquery dialog

查看:17
本文介绍了使用 KnockoutJS 和 Jquery 对话框时 jQuery 验证失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在 MVC3 中使用 html.RenderAction 呈现的表单.

除此之外,我还有一个用于淘汰赛的 jquery 模板.模型使用默认的data-val-required"属性正确渲染到视图中.

但是我注意到 jQuery 验证总是返回 true.

<div id="dlgAdd" data-bind="template: { name: 'editTemplate', data: selected }">

<script id="editTemplate" type="text/html"><div>@{Html.RenderAction("EditDialog");}

EditDialog 部分呈现如下输出:

 
<div class="fields-inline"><div class="editor-label"><label for="Name">Name</label>

<div class="editor-field"><input data-val="true" data-val-required="名称字段是必需的."id="Name" name="ko_unique_41" value="" type="text"><span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>

<span id="validationmessage" class="field-validation-error"></span></表单>

但是,当我调用 $("#frmAddNew").valid()) 时,它总是返回 'true'.我不知道它的淘汰赛、jQuery 或 mvc 是否阻止验证返回 false.

解决方案

尝试调用 $.validator.unobtrusive.parse(yourFormElement) 来获取相关的 data- 属性到验证解析.

你可以像这样触发它:

<div id="dlgAdd" data-bind="template: { name: 'editTemplate', data: selected, afterRender: hookUpValidation }">

然后,hookUpValidation 看起来像:

hookUpValidation:函数(节点){$.validator.unobtrusive.parse(nodes[0]);}

I have a form which is rendered using html.RenderAction in MVC3.

Outside of this I have a jquery template used with knockout. The model is rendered correctly into the view with the default 'data-val-required' attributes.

However I've noticed that jQuery validation always returns true.

<div id="dlgAdd" data-bind="template: { name: 'editTemplate', data: selected }">
</div>
<script id="editTemplate" type="text/html">  
<div> 
@{
    Html.RenderAction("EditDialog");
}
</div>    
</script>

The EditDialog partial renders the following output like so:

 <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>

However, when I call $("#frmAddNew").valid()), it always returns 'true'. I don't know if its knockout, jQuery or mvc which is preventing the validation from returning false.

解决方案

Try calling $.validator.unobtrusive.parse(yourFormElement) to get your data- attributes related to validation parsed.

You could trigger it like:

<div id="dlgAdd" data-bind="template: { name: 'editTemplate', data: selected, afterRender: hookUpValidation  }">
</div>

then, hookUpValidation would look like:

hookUpValidation: function(nodes) {
    $.validator.unobtrusive.parse(nodes[0]);
}

这篇关于使用 KnockoutJS 和 Jquery 对话框时 jQuery 验证失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
其他开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆