Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function Extjs-隐藏字段内容上的textlabel值更改_Function_Extjs_Hidden_Xtype - Fatal编程技术网

Function Extjs-隐藏字段内容上的textlabel值更改

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

我正试图根据另一个字段(隐藏)上的值来更改表单中displayfield的值

隐藏字段从映射中检索其值,displayfield也将从映射中检索内容,但根据隐藏值从两个不同的值(mapping1、mapping2)检索内容。这就是我想做的:

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。我已经用一个更完整的例子编辑了这个问题,说明了我想要实现的目标。谢谢你的帮助。