将Dojo Datepicker附加到元素

时间:2013-07-26 00:52:08

标签: javascript html dojo xpages

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

更新

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

2 个答案:

答案 0 :(得分: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/

EDIT ::

要在跨度中使用日历,请使用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

答案 1 :(得分:0)

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

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