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

时间:2013-04-24 05:59:03

标签: jquery asp.net-mvc asp.net-mvc-4

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

Unobtrusive Ajax stopped working after update jQuery to 1.9.0

和这一个:

jquery.unobtrusive-ajax plugin broken when updating to Jquery 1.9.0

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

 $jQval.unobtrusive.parse(document);

enter image description here

2 个答案:

答案 0 :(得分:2)

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

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"));

答案 1 :(得分:1)

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

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

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

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,我会建议这取决于传统的jQuery功能)。