Jquery客户端验证无法正常工作

时间:2012-06-15 05:49:14

标签: javascript jquery asp.net-mvc-3

我正在尝试使用jquery.validate.unotrusive.js插件动态创建表单字段,如:

var message = $("<textarea id='test'></textarea>");
$(message).attr("data-val", "true")
.attr("data-val-number", "The field CustomerId must be a number.")
.attr("data-val-required", "The CustomerId field is required.");

var span = $('<span class="field-validation-valid" data-valmsg-replace="true"></span>');
$(span).attr("data-valmsg-for", $(message).attr("id"));

var form = $("<form action='url'></form>");

$(form).append(message,span);

我嵌入了jquery.validate&amp; jquery.validate.unobtrusive js文件但textarea字段未在表单提交时验证。有人能告诉我们这里出了什么问题吗?

1 个答案:

答案 0 :(得分:3)

当您动态地向DOM添加新元素时,您需要重新分析不显眼的验证规则才能注册它们。因此,一旦将表单附加到DOM,就会调用$.validator.unobtrusive.parse方法来通知客户端验证框架这些更改:

...
$(form).append(message, span);
$.validator.unobtrusive.parse(form);

如果您只是将动态添加输入元素添加到已注册客户端验证的DOM中的现有表单,您还需要删除此表单的先前规则:

// adding some form elements to an existing form ...

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