简单问题:我有一个带ID的元素。我想在页面加载后将Dojo Datepicker控件附加到该元素。当我点击该元素时,应该出现日期选择器。 API文档缺乏这种方法。我错过了什么?你有解决方案吗?提前谢谢!
更新
要明确:我不想将Datepicker附加到输入元素,而是附加到span / div元素(仅文本)。当我点击该元素时,应该出现日期选择器。其余的编码应该在datepicker的JS代码(更改视图等)中完成。 我可以使用jQuery Datepicker,但我希望获得清晰而独特的用户体验。这就是我要求Dojo方式的原因; - )
答案 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/