本地化在jQuery UI日期选择器中不起作用



我对正在维护的web应用程序的UI进行了多次修改。其中包括从NuGet中获取JS库,并将它们调整到比以前更新的版本。

旧版本运行jQuery 1.8.2和jQuery UI 1.8.24(由Firebug自定义、缩小、重新美化并显示给您),运行一个完美本地化的DatePicker,包括格式dd/MM/yyyy,即MVC页面连接到文本框中的数据格式。

现在我已经获取了jQuery 1.11.2和jQuery UI 1.11.2,假设一切都将按预期继续工作。

没有。

DatePicker仍按如下方式初始化:

<script type="text/javascript">
       $(function() {
            $.datepicker.setDefaults($.extend({ showMonthAfterYear: false }, $.datepicker.regional['']));
            $(".datePicker").datepicker($.datepicker.regional['it']);
            $('.datePicker').datepicker('option', 'changeMonth', true);
            $('.datePicker').datepicker('option', 'changeYear', true);
            $("#locale").change(function() {
                $('.datePicker').datepicker('option', $.extend({ showMonthAfterYear: false },
                    $.datepicker.regional[$(this).val()]));
            });
        });
</script>

文本框是

<input type="text" class="datePicker" id="date_begin" name="pDateBegin" value="<%=Some.Data %>" readonly="readonly"/>
<input type="text" class="datePicker" id="date_end" name="pDateEnd" value="<%=Some.Data %>" readonly="readonly"/>

简单地说,旧的应用程序显示了一个本地化良好的日历,并接受dd/MM/yyyy日期。新的重构应用程序显然不接受24/02/2015这样的日期作为有效日期,而将文本框留空。该版本显示了一个英文本地化日历,而JS代码需要it区域。从旧应用程序上的Firebug控制台,我可以正确地看到$.datepicker.regional['it']的值,而在新应用程序中它是空的。

我想追踪,自己解决这个问题,在代码中定义了IT区域,但搜索Chiudi(它的消息是"关闭")找不到任何东西。看起来这种语言来自于误解。

旧的应用程序包括以下文件(按Firebug的顺序):

  • jquery.form.js
  • jquery-1.8.2-min.js
  • jquery-ui-1.8.24.custom.min.js(在粘贴中链接,神奇的单词Chiudi没有结果)
  • superfish.js
  • 自定义应用程序的JS脚本(包含在新应用程序中,无论如何都不会覆盖日期选择器)
  • Microsoft Ajax.js
  • Microsoft MVC.js
  • jquery.tablesorter.js
  • jquery.tablesorterpager.js

在ASPX代码中甚至没有找到日期选择器的区域覆盖,我在检查的页面中还没有更改它。

问题是

如何将语言添加到jQuery UI的标准NuGet分布中?

您可以包含以下代码:

<script type="text/javascript"
        src="http://jqueryui.com/ui/i18n/jquery.ui.datepicker-fr.js">
</script>

http://jqueryui.com/datepicker/#localization-看看这个演示&您可以从这里下载语言文件:https://github.com/jquery/jquery-ui/tree/master/ui/i18n

好的,像往常一样,我在SO上发布问题12秒后自己找到答案。

Install-Package jQuery.UI.i18n 

这个包没有出现在列表的顶部,我不得不搜索Tags:"jQueryUI" i18n才能找到它

下一步是修改(对我来说,我使用Web优化)

bundles.Add(new ScriptBundle("~/bundles/jquery-ui").Include("~/Scripts/jquery-ui-{version}.js").Include("~/Scripts/jquery-ui-i18n.js"));

最新更新