我对正在维护的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"));