为什么dijit TimeTextBox不会以下拉值为中心?

时间:2015-08-25 20:06:22

标签: internet-explorer internet-explorer-8 dojo internet-explorer-11

我们正在更新目前仅在模拟IE6的IE8上运行的旧应用程序。计划是让它在IE11企业模式下运行。部分应用程序使用dojo,我们团队中很少有人知道,我用Google搜索和Google搜索,无法找到问题的答案!

我有一个像这样定义的dijit TimeTextBox:

var timePicker = new TimeTextBox({
  value: new Date(),
  tabindex: 30,
  id: "Picker",
  name: "Picker",
  style: "width:70px",
  constraints: {
    timePattern: 'HHmm',
    clickableIncrement: 'T00:01',
    visibleIncrement: 'T00:01',
    visibleRange: 'T00:30',
  }
}, "PickerId");

在IE8上模拟IE6,这很好用。下拉中心以当前值为中心,并显示从4分钟到5分钟后的下拉时间。在IE11中,该框显示正确的值,但下拉菜单从00:00开始,显示的值最多为00:30。我希望下拉列表显示十分钟的时间范围,但可滚动,以便用户可以选择最初未显示在下拉列表中的时间。

有没有人经历过这个和/或修过它?

1 个答案:

答案 0 :(得分:1)

为了获得适当的范围,您必须定义pickerMinpickerMax约束(但dojo文档似乎不是非常明确的)。
您可以看到内联doc:_TimePicker.js第34行。



require(["dijit/form/TimeTextBox", "dojo/domReady!"], function(TimeTextBox){
    var now = new Date();
    var before = new Date(now.getTime() - (60 * 4 * 1000)); // - 4 minutes
    var after = new Date(now.getTime() + (60 * 5 * 1000)); // + 5 minutes
    var timePicker = new TimeTextBox({
      value: now,
      tabindex: 30,
      id: "Picker",
      name: "Picker",
      style: "width:70px",
      constraints: {
        timePattern: 'HHmm',
        clickableIncrement: 'T00:01',
        visibleIncrement: 'T00:01',
        visibleRange: 'T00:30',
        pickerMin: before.toISOString(),
        pickerMax: after.toISOString()
      },
      
    }, "PickerId");
});

<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/resources/dojo.css"> 
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dijit/themes/tundra/tundra.css">
<div class="tundra">
  <input id="PickerId" type="text" />
</div>
&#13;
&#13;
&#13;