0

简单的问题:我有一个带有 ID 的元素。我想在页面加载后将 Dojo Datepicker 控件附加到该元素。当我单击该元素时,应出现日期选择器。API 文档缺少这种方法。我错过了什么?你有解决方案吗?提前致谢!

更新

需要明确的是:我不想将 Datepicker 附加到输入元素,而是附加到 span/div 元素(仅限文本)。当我单击该元素时,应出现日期选择器。其余的编码应该在日期选择器的 JS 代码中完成(更改视图等)。我可以使用 jQuery Datepicker,但我想获得清晰独特的用户体验。这就是我要求 Dojo 方式的原因 ;-)

4

2 回答 2

1

如果 dojox.mobile 选择器是您要寻找的,则需要将其附加到覆盖层。没有直接的依恋。像 dijit/datetextbox。如果移动选择器是您想要的,下面就是一个示例。

使用开瓶器时,在 show() 内部是您告诉它附加什么的地方。

<div id="customPicker" data-dojo-type="dojox/mobile/Opener" data-dojo-props="onHide:setDeliveryDate">
     <h1 data-dojo-type="dojox/mobile/Heading" label="Custom Picker">
              <div data-dojo-type="dojox/mobile/ToolBarButton" label="Done" class="mblColorBlue" style="width:45px;float:right;" onClick="dijit.registry.byId('customPicker').hide()"></div>
      </h1>
    <div id="dateSpinner" data-dojo-type="dojox/mobile/DatePicker" data-dojo-props="monthPattern:'MM', dayPattern:'dd'"></div>
</div>

<input id="dateField" onclick="dijit.registry.byId('customPicker').show(this)"></input>

和脚本::

require(["dojo","dojox/mobile/Opener","dojox/mobile/Heading", "dojox/mobile/ToolBarButton","dojox/mobile/DatePicker", "dijit/registry"])


    function setDeliveryDate(){

        var spin =dijit.registry.byId("dateSpinner");
        dojo.byId("dateField").value = spin.slots[1].value + "/" + spin.slots[2].value + "/" + spin.slots[0].value;


    }

小提琴:http: //jsfiddle.net/PrJzp/

编辑::

要在跨度中使用日历,请使用 dijit/Calendar 组件。

require([
    "dijit/Calendar",
    "dojo/date",
    "dojo/domReady!"
], function(Calendar, date){
    new Calendar({
        value: new Date(),
    }, "SpanWhereCalendarIS");
});

https://dojotoolkit.org/reference-guide/1.9/dijit/Calendar.html

于 2013-07-26T05:49:09.817 回答
0

确保 XPage 加载 Dojo,然后在 inputText 控件上将 dojoType 设置为 dijit.form.DateTextBox。

您还可以在 XPages 日期选择器控件上设置 dojoType。Paul Withers 对此有一篇博文:http: //www.intec.co.uk/xpages-date-picker-my-preference/

于 2013-07-26T05:55:08.183 回答