【问题标题】:Dynamically Update Radio inputValue (EXT JS 4.2.1)动态更新 Radio inputValue (EXT JS 4.2.1)
【发布时间】:2014-04-25 03:24:10
【问题描述】:

我正在创建一个无线电组,当它创建时,我设置“inputValue”来设置字段的值。对于第一个单选按钮,inputValue 设置为“I”(输入),第二个单选按钮设置为“O”(输出)。

如果有人单击“OUT”单选,则会弹出一个窗口并要求他们从组合框中选择一个值。可能的值有“F”、“R”或“T”,如果他们选择其中之一,我想修改“OUT”输入值以反映这一点。因此,当提交表单时,它应该例如返回“F”而不是“O”。

这是单选按钮的代码:

items: [
    {
        xtype: 'container',
        defaultType: 'radiofield',
        allowBlank: false,
        blankText: 'Required',
        hideLabel: true,
        layout: 'hbox',
        items: [
            {
                xtype: 'radiofield',
                boxLabel: 'IN',
                name: 'susceptible_populations_1',
                width: 50,
                padding: '2 0 0 10',
                checked: true,
                inputValue: 'I',
                id: 'susceptible_populations_1_in'
            },
            {
                xtype: 'radiofield',
                boxLabel: 'OUT',
                name: 'susceptible_populations_1',
                width: 115,
                padding: '2 0 0 10',
                inputValue: 'O',
                id: 'susceptible_populations_1_out',
                listeners: {
                    click: {
                        element: 'el',
                        fn: function() {
                            show_popup_window('susceptible_populations_1_out', '9A(5)');
                        }
                    }
                }
            }
        ]
    }
]

我在 Google 上四处搜索并找到了几个解决方案,但似乎没有一个对我有用。当我提交表单时,它们都仍然返回“O”。

以下是我的弹出窗口的一些定义:

  • FIELD_NAME 作为第一个参数传递给函数。在这种情况下,它是“susceptible_populations_1_out”
  • TRUNCATED_FIELD_NAME 与上述相同,只是删除了“_out”。在这种情况下,它是“susceptible_populations_1”。这是我的表单帖子实际返回的字段名称。
  • record 是组合框的值。在本例中,我们可以使用字母“F”。

以下是我正在尝试的一些示例:

Ext.getCmp(FIELD_NAME).setValue(record);

这似乎将 radio 的值设置为 true。当我点击它时,该值应该已经设置为 true,所以这是多余的,不会将 inputValue 更改为 'F'

Ext.get(FIELD_NAME).set({inputValue:record});

这似乎没有任何作用。我猜这是因为要设置一些东西,set 需要一个当前名称和值,并且在匹配时将该实例设置为 true。这不是我想要做的。

var temp = Ext.get(Ext.ComponentQuery.query('[name=' + TRUNCATED_FIELD_NAME + ']')).getValue().elements[1];
Ext.get(temp).set({value:record});

在这里,我试图直接访问该元素,但它似乎也没有做任何事情。我还尝试了前面代码 sn-ps 的许多不同组合(包括在上面的示例中将 FIELD_NAME 替换为 TRUNCATED_FIELD_NAME),但无线电的值总是返回为 'O'。

在 Sencha Touch 中,似乎有一个 setGroupValue,但我在任何地方的 EXT JS 4 文档中都找不到它。 (尽管getGroupValue 可以正常工作。)

有人可以给我一些指导吗?

非常感谢!

【问题讨论】:

  • 你试过Ext.get(FIELD_NAME).inputValue = 'F'吗?
  • 不,我没有,但你非常接近!我尝试了你的建议,但没有奏效。我将get 更改为getCmp,然后它起作用了! Ext.getCmp(FIELD_NAME).inputValue = 'F';你能把这个作为答案让我接受吗?

标签: javascript extjs extjs4


【解决方案1】:

您可以稍后随时设置配置属性

Ext.getCmp(FIELD_NAME).inputValue = 'F'

只注意不应该使用带有静态 id 的 getCmp,而是使用 ComponentQuery 和 itemId。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-22
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多