jquery客户端验证不能在MVC3部分视图中工作

前端之家收集整理的这篇文章主要介绍了jquery客户端验证不能在MVC3部分视图中工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我似乎无法通过以下部分视图获得客户端验证。该视图位于父视图中的divTSettings div内。尝试从stackoverflow和其他网站的东西,似乎没有任何工作。有任何想法吗?
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>


@using (Ajax.BeginForm("CreateT","TAdmin",null,new AjaxOptions { HttpMethod = "Post",UpdateTargetId = "divTSettings"},new { id = "CreateTForm" }))
{
    <div>
        <label>Name:</label>
        <input type="text" name="tName" id="tName"/>
        @Html.ValidationMessage("tName")
        <input type="submit" value="Submit"/>
    </div>
}

<script type="text/javascript">
$(function() {
    $('#CreateTForm').validate({
        rules: {
            tName: {
                required: true
            }
        },messages: {
            tName: {
                required: 'Name required'
            }
        }
    });
    $("#CreateTForm").removeData("validator");
    $("#CreateTForm").removeData("unobtrusiveValidation");
    $.validator.unobtrusive.parse("#CreateTForm");
});
</script>

解决方法

Any ideas?

是的,你应该做的第一件事是摆脱所有这些< script>您的部分视图中的标签。部分视图不应包含任何脚本。部分视图应仅包含标记。我重复了这么多次,仍然看到人们把脚本放在里面。脚本应该在您的布局或主视图中注册,您可以通过覆盖布局中注册的一些脚本部分,将所有脚本插入到HTML文档的末尾,就在结束之前, /体>标签。那就是他们所属的地方

好的,现在到了实际的问题:不明智的验证不能动态添加到DOM的元素,例如向服务器发送一个AJAX请求,返回部分视图,这个部分视图是然后注入DOM。

为了使其工作,您需要使用不显眼的验证框架注册新增的元素。为此,您需要在新增的元素上调用$ .validator.unobtrusive.parse:

$("form").removeData("validator");
$("form").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("form");

你应该把这个代码放在AJAX成功的处理程序中,把这个部分注入你的DOM。一旦你注入了新元素,只需调用这个函数即可。

如果您不是用jQuery($ .ajax,$ .post,…)手动编写AJAX请求,而是依靠一些Ajax.BeginForm和Ajax.ActionLink帮助者为您做这项工作,则需要订阅在AjaxOptions中的OnSuccess回调,并将此代码放在那里。

原文链接:https://www.f2er.com/jquery/182160.html

猜你在找的jQuery相关文章