我在MVC3项目的页面上有一些动态插入的表单域。通常,我们将添加jQuery验证服务器端,但在这种情况下,我们不能(UI中的多个字段为一个隐藏字段生成值 – 这是提交的内容,我们无法验证隐藏字段,所以我们必须为用户可以看到的字段添加仅用于UI的验证)
$container.find(".date").rules("add",{ @R_403_103@: true,messages: { @R_403_103@: "The date is @R_403_103@" } });
但它不行!奇怪的是,禁用上述代码,创建动态元素,然后在浏览器中运行代码JS控制台工作,但只有默认验证消息显示。
我很失落有任何想法吗?
我使用jQuery验证1.9.0&不引人注意的插件
解决方法
现在我明白了Unobtrusive插件方面的事情(我明白ASP.NET有什么不同),这就是你需要做的事情:
添加新元素后,调用$ .validator.unobtrusive.parseElement(newElement),并将其添加到表单中。根据您的建议,您需要在新的form元素中设置data-val和data-val-@R_403_103@属性。
所以你最终得到这个:
//create new form element $('form fieldset').append('<br>New Field: '+ '<input type="text" data-val="true" data-val-@R_403_103@="A date is @R_403_103@." name="newField">'+ ' * Also @R_403_103@'); //add new rules to it $.validator.unobtrusive .parseElement($('form').find('input[name="newField"]').get(0));