ASP.NET MVC 2使用MicrosoftMvcJQueryValidation.js进行客户端验证.
有这个文件的问题只是没有正常工作,并想知道我是否有错误的版本.
我使用的版本来自期货来源.
MicrosoftMvcJQueryValidation.js 5,626 bytes 11/17/09 10:43:12am
我认为我的版本错误有两个原因:
1)我实际上必须调用此代码才能使验证例程正常工作.这是因为现在嵌入到FormContext.cs中的默认客户端验证功能是Sys.Mvc.FormValidation.enableClientValidation.
ViewContext.FormContext.ClientValidationFunction = "EnableClientValidation";
2)jquery.validate.js中有一些代码可以执行以下操作:
this.settings.errorPlacement ? this.settings.errorPlacement(label,$(element) ) : label.insertAfter(element);
这在MicrosoftMvcJQueryValidation.js中调用此函数:
errorPlacement: function(error,element) { var messageSpan = fieldToMessageMappings[element.attr("name")]; $(messageSpan).empty(); $(messageSpan).removeClass("field-validation-valid"); $(messageSpan).addClass("field-validation-error"); error.removeClass("input-validation-error"); error.attr("_for_validation_message",messageSpan); error.appendTo(messageSpan); },
问题是元素已被jQuery $(包含)jQuery $(element)表达式包装.
因此,element.attr(“name”)未定义,但元素[0] .attr(“name”)有效.
我从Microsoft’s site的期货下载中获取了MicrosoftMvcJQueryValidation.js.
`
我找不到任何其他MicrosoftMvcJQueryValidation版本 – 但我敢肯定必须有一个版本.有人可以帮忙吗?
解决方法
截至2009年12月17日,最新版本的MicrosoftMvcJQueryValidation.js可在
futures download project中找到.
请小心包含MicrosoftMvcJQueryValidation.js和NOT the similarly named MicrosoftMvcValidation.js.