ASP MVC 3新元素的Javascript验证

时间:2012-02-21 18:20:11

标签: asp.net-mvc-3 jquery-validate validation

在客户端我创建了一些输入,例如:

var title = document.createElement('input');
title.setAttribute('type', 'text');
title.setAttribute('name', 'Title');
myForm.appendChild(title);

这个字段应该是必需的。我该怎么做这个验证?

1 个答案:

答案 0 :(得分:1)

  

我该如何进行验证?

您应该对jquery unobtrusive验证使用的HTML5 data-*属性应用,然后调用jQuery.validator.unobtrusive.parse强制插件重新分析已动态添加的规则:

var title = document.createElement('input');
title.setAttribute('type', 'text');
title.setAttribute('id', 'Title');
title.setAttribute('name', 'Title');
title.setAttribute('data-val', 'true');
title.setAttribute('data-val-required', 'This field is required');
myForm.appendChild(title);

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

另请注意,除非您使用<span>帮助程序将所有错误消息集中在一个位置,否则您可能希望提供用于显示错误消息的相应Html.ValidationSummary元素。此元素应如下所示:

<span class="field-validation-valid" data-valmsg-for="Title" data-valmsg-replace="true"></span>

可以用更简洁的方式编写:

$(function () {
    $.validator.unobtrusive.parse(
        $('form').append(
            $('<input/>', {
                type: 'text',
                id: 'Title',
                name: 'Title'
            })
            .attr('data-val', 'true')
            .attr('data-val-required', 'This field is required')
        )
        .append(
            $('<span/>')
                .addClass('field-validation-valid')
                .attr('data-valmsg-for', 'Title')
                .attr('data-valmsg-replace', 'true')
        )
        .removeData('validator')
        .removeData('unobtrusiveValidation')
    );
});