Ste*_*cki 7 datepicker bootstrap-datepicker
我在我的Bootstrap应用程序中的模态窗口中使用了一个日期选择器.我正在使用Stefan Petre的原始Datepicker.我使用鼠标在桌面和移动设备上构建它,它工作正常.
最近我有一个用户请求允许它也可以使用键盘.我删除了readonly属性以允许用户在输入字段中输入日期.日期格式设置为"mm/dd/yyyy".
当我输入像今天这样的日期时,比如这个"12/11/13"那么它将默认为1913.这不是一个大问题,因为我可以训练用户使用4位数,但我宁愿只有它默认为本世纪.
注意:这似乎只发生在4位数年份的日期格式.这似乎也在Stefan代码的新分支中以相同的方式发生.
注意:我使用的是Bootstrap 2.0.4.我正在测试Firefox.
这是它的样子:

Jos*_*osh 12
在JavaScript中,将datepicker的assumeNearbyYear属性设置为true,如下所示:
$("#dp").datepicker({
assumeNearbyYear: true
});
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为 Bootstrap 日期选择器正在使用JavaScript Date 对象。当您创建一个新的 Date 对象并传入两位数年份时,它将输出 1900+year(请参阅Why does Javascript 将 2 位数字年份 00 计算为 1900 而不是 2000?)
您可以尝试调整日期选择器源代码,但这可能太复杂了。
从我在http://www.eyecon.ro/bootstrap-datepicker/上看到的情况来看,没有选项可以设置可选日期的范围,但您可以更改格式以使用两位数年份。
在您的屏幕截图上,我可以看到,您正在使用日期选择器来表示“到达日期”,我认为这是将来的日期。该网站上有一个有关如何禁用过去日期的示例。
我希望这有帮助。
我已经为您的问题编写了一个事件处理程序,应该可以解决问题。
JavaScript 位于http://jsfiddle.net/pCYbd/1/
$("#dp").datepicker();
$("#dp").on("keyup", function(e) {
var date, day, month, newYear, value, year;
value = e.target.value;
if (value.search(/(.*)\/(.*)\/(.*)/) !== -1) {
date = e.target.value.split("/");
month = date[0];
day = date[1];
year = date[2];
if (year === "") {
year = "0";
}
if (year.length < 4) {
newYear = String(2000 + parseInt(year));
$(this).datepicker("setValue", "" + month + "/" + day + "/" + newYear);
if (year === "0") {
year = "";
}
return $(this).val("" + month + "/" + day + "/" + year);
}
}
});
Run Code Online (Sandbox Code Playgroud)
CoffeeScript 位于http://jsfiddle.net/pCYbd/2/
$("#dp").datepicker()
$("#dp").on "keyup", (e) ->
value = e.target.value
if value.search(/(.*)\/(.*)\/(.*)/) != -1
date = value.split("/")
month = date[0]
day = date[1]
year = date[2]
year = "0" if year == ""
if year.length < 4
newYear = String(2000 + parseInt(year))
$(@).datepicker("setValue", "#{month}/#{day}/#{newYear}")
year = "" if year == "0"
$(@).val("#{month}/#{day}/#{year}")
Run Code Online (Sandbox Code Playgroud)
我的 JavaScript 技能不是最好的,但这应该可行。
| 归档时间: |
|
| 查看次数: |
8520 次 |
| 最近记录: |