实时计算字段ExtJS
Calculate a field in real time ExtJS
ExtJS表单中有一个完成日期字段和一个到期日期字段。当用户选择完成日期时,我希望在选择完成日期后自动填写到期日期。
以下是我目前所拥有的:
var completionDate = {
fieldLabel: 'Completion Date',
xtype: 'datefield',
submitFormat: 'time',
name: 'trainingCompletion',
labelAlign: 'right',
labelWidth: 150,
readOnly: false,
readOnlyCls: 'readOnlyFields',
listeners: {
select: function (dateField, newValue, oldValue){
expirationDate.oldValue = newValue;
}
},
};
var expirationDate = {
fieldLabel: 'Expiration Date',
xtype: 'datefield',
submitFormat: 'time',
name: 'trainingExpiration',
labelAlign: 'right',
labelWidth: 150,
readOnly: true,
readOnlyCls: 'iamis_readOnlyFields'
};
然后,该功能应该为completionDate
增加15个月,但我想让它更新第一个
声明trainingCompletion
和trainingExpiration
的代码
{name: 'trainingCompletion', type: 'date', dateReadFormat: 'time', dateWriteFormat: 'm/d/Y', useNull: true},
{name: 'trainingExpiration', type: 'date', dateReadFormat: 'time', dateWriteFormat: 'm/d/Y', useNull: true},
提供的代码看起来非常不完整。
在声明侦听器时,您应该注意将执行侦听器的范围。假设这两个日期字段在一个表单上,您应该定义侦听器的作用域,以确保您对过期字段有正确的引用。
我在代码中做了一些与您类似的事情,所以我将在我的编程风格中分享一个这样做的代码,但您可以根据自己的编码风格进行调整。
Ext.define("My.form.Task", {
extend: "Ext.form.Panel",
alias: "widget.mytaskform",
buttonAlign: "left",
defaults: {
anchor: '100%',
margin: '10px 0px 0px 0px',
labelAlign: 'left',
labelWidth: 125
},
initComponent: function() {
this.items = [{
fieldLabel: 'Completion Date',
xtype: 'datefield',
submitFormat: 'time',
name: 'trainingCompletion',
labelAlign: 'right',
labelWidth: 150,
readOnly: false,
readOnlyCls: 'readOnlyFields',
listeners: {
select: {
scope: this,
fn: function (dateField, newValue, oldValue){
var expirationField = this.down("[name=trainingExpiration]");
// You need to add the desired months to the date
// before setting it to the expirationField.
expirationField.setValue(newValue);
}
}
},
},{
fieldLabel: 'Expiration Date',
xtype: 'datefield',
submitFormat: 'time',
name: 'trainingExpiration',
labelAlign: 'right',
labelWidth: 150,
readOnly: true,
readOnlyCls: 'iamis_readOnlyFields'
}];
this.callParent(arguments);
},
// form remaining code...
});
这看起来不对:
expirationDate.oldValue = newValue
相反,您应该在日期字段上使用正确的setValue()方法
expirationDate.setValue(newValue);
相关文章:
- 如何将onChange方法添加到ExtJS 4表单中的所有字段(textField)中
- 实时计算字段ExtJS
- Extjs 3.3动态地将字段添加到表单中,并设置它们的标签宽度
- Extjs 4.2.1隐藏字段-inputEl.dom怎么可能未定义
- ExtJS 5.1-如何将日期字段屏蔽为00/00/0000
- ExtJs组合框显示字段编码
- 在Extjs中,获取自定义字段容器中的textfield值
- Extjs图表:动态设置字段
- 如何忽略ExtJS数据模型中的空字段
- ExtJS有条件地呈现输入字段
- ExtJS 4.1.1:评估网格中的字段
- Extjs 6.0 颜色选择器十六进制字段
- ExtJS 4.1 - 如何覆盖所有字段
- Extjs 根据开始时间字段中的输入将值设置为结束时间字段
- 从 Rally 构建的 extjs 组合框中,如何获取子 ChangeSet 记录上的字段
- 带有工具提示的 ExtJS 4.2.1 网格字段
- allowBlank:false在extjs字段中有什么用途
- 如何知道Extjs字段集已折叠或展开
- ExtJS:字段更改事件在ViewController's初始化
- 动态隐藏ExtJS字段集中的控件