Function Extjs-隐藏字段内容上的textlabel值更改
我正试图根据另一个字段(隐藏)上的值来更改表单中displayfield的值 隐藏字段从映射中检索其值,displayfield也将从映射中检索内容,但根据隐藏值从两个不同的值(mapping1、mapping2)检索内容。这就是我想做的:Function Extjs-隐藏字段内容上的textlabel值更改,function,extjs,hidden,xtype,Function,Extjs,Hidden,Xtype,我正试图根据另一个字段(隐藏)上的值来更改表单中displayfield的值 隐藏字段从映射中检索其值,displayfield也将从映射中检索内容,但根据隐藏值从两个不同的值(mapping1、mapping2)检索内容。这就是我想做的: mapping: ['myHidden''mapping1','mapping2'], form: [{ fieldLabel: 'myHidden', xtype: 'hidden', name: 'myHidden', l
mapping: ['myHidden''mapping1','mapping2'],
form: [{
fieldLabel: 'myHidden',
xtype: 'hidden',
name: 'myHidden',
listeners: {
'change': function(){
if(this.getValue=='X'){
this.up('form').findfield('myText').setName('mapping1');
}
else{
this.up('form').findfield('myText').setName('mapping2');
}
}
}
},{
fieldLabel: 'myText',
xtype: 'displayfield'
}]
我不明白,name
标记给出了到“myText”的映射,但是既然我不想更改它的值,我该怎么做呢
我只想根据通过“myHidden”字段从服务器获取的值更改表单加载时“myText”的映射
谢谢你的帮助 您正在为文本字段(
name
)的关键配置定义一个函数。你为什么要做这样的事?好的,回到我的答案 您希望文本字段值在什么时候更改?hiddenfield何时获得值?此代码适用于您:
{
xtype: 'hidden',
id: 'myHidden',//Do you really want an id?
name: 'myHidden',
listeners: {
change: function(){
//this piece of code changes the textfield to the same value as the hidden field when the hidden field value changes.
this.up('form').findfield('myTextField').setValue(this.getValue());
}
}
},{
fieldLabel: 'myText',
xtype: 'displayfield',
name: 'myTextField'
}
解决此问题的最佳方法是创建一个包含hiddenfield和字段的容器。这样,hiddenfield值将由表单发布,而不是来自另一个字段的值。你会得到这样的结果:
Ext.define('LookupField', {
extend: 'Ext.container.Container',
alias: 'widget.lookupfield',
constructor: function (config) {
var me = this;
var hiddenFieldName = me.name;
var triggerFieldName = "Display" + me.name;
me.hiddenField = Ext.create('Ext.form.field.Hidden', {
name: hiddenFieldName,
hidden: true
});
me.triggerField = Ext.create('Ext.form.field.Trigger', {
name: triggerFieldName,
triggerCls: 'x-form-search-trigger',
editable: false,
submitValue: false,
enableKeyEvents: true,
onTriggerClick: function () {
}//eo onTriggerClick
});
//Add config to the triggerfield
Ext.applyIf(me.triggerField, config);
//Add the hiddenfield and triggerfield to the container
me.items = [me.hiddenField, me.triggerField];
me.callParent(arguments);
}//eo initComponent
});
我已经能够让第一个示例按照我的要求工作。我不知道这是否是最好的解决方案,但我会把它放在这里,这样如果你面临同样的问题,你就可以使用它 基本上,我已经将这些值映射到隐藏字段,然后根据
myHidden
mapping: ['myHidden''mapping1','mapping2'],
form: [{
fieldLabel: 'mapping1',
xtype: 'hidden',
id: 'mapping1',
},{
fieldLabel: 'mapping2',
xtype: 'hidden',
id: 'mapping2',
},{
fieldLabel: 'myHidden',
xtype: 'hidden',
name: 'myHidden',
listeners: {
'change': function(){
if(this.getValue=='X'){
Ext.getCmp('myText').setValue(Ext.getCmp('mapping1').getValue());
}
else{
Ext.getCmp('myText').setValue(Ext.getCmp('mapping2').getValue());
}
}
}
},{
fieldLabel: 'myText',
xtype: 'displayfield',
id: 'myText'
}]
您好,我尝试了您的第一个解决方案,但没有成功。顺便说一句,我使用的是ExtJS 3.0。我已经用一个更完整的例子编辑了这个问题,说明了我想要实现的目标。谢谢你的帮助。