使用JQuery 1.9的MVC不显眼validation无法正常工作

我已完成本文所述的所有步骤:

在将jQuery更新到1.9.0后,不显眼的Ajax停止工作

还有这个:

更新到Jquery 1.9.0时,jquery.unobtrusive-ajax插件坏了

但是我仍然在(jquery.validate.unobtrusive.js)这一行的firebug中收到警告

$jQval.unobtrusive.parse(document); 

在此处输入图像描述

您的解决方案不正确,您的修复工作正在完成,但我认为有关它的一些背景信息不会受到影响。

请注意,导致警告的原因是jQuery Migrate插件。

它用于根据较旧的jQuery版本提供代码的向后兼容性。 如果您不希望被警告有关已弃用的function以及如何将其更新为当前标准,则可以使用以下代码行禁用警告:

 jQuery.migrateMute = true; 

请注意,这些警告只发生在jQuery Migrate的开发版本中,因此如果切换到jquery migrate( jquery-migrate-1.0.0.min.js )的缩小版本,则甚至不需要此行。

另请注意,您正在使用jquery文件的开发版本,在生产环境中应使用缩小版本,因此您的修复也需要在jquery.validate.unobtrusive.min.js实现。

总而言之:

  • 如果您使用jQuery Migrate插件(您这样做),则无需修复它。
  • 该警告可以被禁用。
  • 该警告不会出现在生产环境中(如果使用了正确的脚本)。
  • 微软有望在下一版本的jquery.validate.unobtrusive中修复它
  • 如果你修复它,请确保你也在缩小版本中修复它。
  • 修复它的唯一好处是你可以删除jQuery Migrate插件(如果你绝对确定你的应用程序中没有javascript,我会建议这取决于传统的jQueryfunction)。

让它工作现在没有任何问题。 如果这是不正确的,请告诉我,但从我看到它的工作正常。

jquery.validate.unobtrusive.js

209行:

  var $forms = $(selector) .parents("form") .andSelf() .add($(selector).find("form")) .filter("form"); 

209行到这个:

  var $forms = $(selector) .parents("form") .addBack() .add($(selector).find("form")) .filter("form"); 

第43行:

 replace = container.attr("data-valmsg-replace") && $.parseJSON(container.attr("data-valmsg-replace")) !== false; 

第73行:

 replace = container.attr("data-valmsg-replace") && $.parseJSON(container.attr("data-valmsg-replace"));