【发布时间】: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