我想将日期选择器添加到文本字段中,作为表达式生成器的一部分。E、 g.您可以输入如下内容:date <= │
(其中│
是光标)
然后单击日历触发器,当选择日期时,让它在光标处插入日期:date <= 2019-04-23│
我看了一下日期选择器是如何实现的,那里有很多东西需要复制。
因此,当时正在考虑在一个隐藏的日期字段上进行跟踪,类似这样:
Ext.create('Ext.form.Panel', {
title: 'Expression Builder',
width: 400,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [{
xtype: 'textfield',
fieldLabel: 'Expression',
allowBlank: true,
triggers: {
calendar: {
cls: 'x-fa fa-calendar',
handler: function (me) {
var itemId = me.id + '-aux-datefield';
var datefield = Ext.ComponentQuery.query('#' + itemId)[0] ||
Ext.create({
itemId: itemId,
xtype: 'datefield',
hideLabel: true,
floating: true,
renderTo: me.getEl(),
alignTarget: me.id,
defaultAlign: 'tr-tr'
});
datefield.onTriggerClick();
}
}
}
}]
});
问题是,如果使用hidden: true
隐藏日期字段,则选择器不会渲染。使用style: 'display: none'
之类的鬼鬼祟祟的工具,选择器将与视口的左上角对齐。将maxHeight
和maxWidth
调整为较小的值,日期字段将调整大小。
这只是众多问题中的一个,其中包括事件处理、在光标处插入、破坏字段等,因此也需要大量工作。
我想知道是否有人做过类似的事情,是否有更简单的方法?
2条答案
按热度按时间snvhrwxg1#
像这样吗
gpnt7bae2#
另一个解决方案是扩展Ext.form.field。Picker,查看Ext.form.field。约会,看看这是怎么做到的。
或者将“日期”字段的源(请参阅API文档)复制到您自己的组件中,因为它具有选择器、样式、格式等所需的组件。然后,您可以去掉日期验证和日期格式。