0

我有三个日期字段分布在单个页面上的三个表单中。每个日期字段都使用引导日期选择器。每个字段都是一个出生日期,因此,只要有任何一个更改,所有三个字段都会更新。

这一切都在 FF、Chrome 等中完美运行。

但是,当您使用 IE8/7 时,日期选择器不会清除输入字段,而是以逗号分隔的列表样式连接新值。我尝试过使用 multidate: false (即使这是默认设置),但它没有效果。

有任何想法吗 ?

这是小提琴:http: //jsfiddle.net/moonspace/xaH2n/

这是代码:

// Set default value
$("#oneDate").val("01/01/1990");
$("#twoDate").val("01/01/1990");
$("#threeDate").val("01/01/1990");

var defaultDate = "25/12/1990";

// Set up datepicker
$("#oneDate, #twoDate, #threeDate").datepicker({
    format: "dd/mm/yyyy",
    startDate: "-89y",
    endDate: "-17y",
    startView: 2,
    autoclose: true,
    orientation: "top left"
}).on("changeDate", function() {
    var newDoB = $(this).val();

    $("#oneDate").datepicker("update", newDoB);
    $("#twoDate").datepicker("update", newDoB);
    $("#threeDate").datepicker("update", newDoB);
});

// Reset value
$("button").on("click", function() {
    $("#oneDate").datepicker("update", defaultDate);
    $("#twoDate").datepicker("update", defaultDate);
    $("#threeDate").datepicker("update", defaultDate);
}); 

提示: 我们发现,要在 IE 中运行 fiddle,请在 chrome/FF 中登录您的帐户并打开 fiddle。然后在 IE 中访问http://jsfiddle.net/draft并登录,您应该会出现 fiddle。

4

1 回答 1

0

问题实际上与 Internet Explorer 相关。

Internet Explorer 中的 splice 函数实际上需要一个额外的参数才能像 Firefox 和 Chrome 那样运行。 IE <= 8 .splice() 不工作

如果您查看它包含的 bootstrap-datepicker.js 代码

this.splice(0);

因此,您的解决方案是使用更新的修复程序(尚未发布:/)获取 bootstrap-datepicker 的主分支 https://github.com/eternicode/bootstrap-datepicker/blob/master/js/bootstrap-datepicker .js

或者

'修复' splice(0) 函数如何通过 javascript 在 Internet Explorer 中工作 http://www.to-string.com/2012/05/29/fixing-splice-in-older-versions-of-internet-explorer- 8岁以上/

于 2014-11-26T05:14:05.993 回答