我在添加/刪除ExtJS表單域時遇到了一些問題。我的用例如下:添加和刪除ExtJS表單域時遇到問題
在窗體上提供一組單選按鈕。根據所選的單選按鈕,顯示一組不同的表單域。
我不是那麼熟悉ExtJS,但我正在做的是緩存要添加/刪除的字段,並在單選按鈕更改事件被觸發時從表單中添加/刪除它們。這裏是我的代碼的簡化版本:
var textFieldA = new Ext.form.TextField({
fieldLabel: 'Text Field A',
name: 'text_field_a',
allowBlank: false
});
var textFieldB = new Ext.form.TextField({
fieldLabel: 'Text Field B',
name: 'text_field_b',
allowBlank: false
});
var form = new Ext.FormPanel({
autoScroll: true,
bodyStyle: 'padding: 5px 5px 0',
border: false,
frame: true,
layout: 'form',
items: [{
xtype: 'fieldset',
fieldLabel: 'Fieldset',
autoHeight: true,
items: [{
xtype: 'radiogroup',
fieldLabel: 'Show text field',
columns: 1,
vertical: true,
items: [
{
xtype: 'radio',
boxLabel: 'Show field a',
name: 'field_to_show',
inputValue: 'a'
},
{
xtype: 'radio',
boxLabel: 'Show field b',
name: 'field_to_show',
inputValue: 'b'
}
],
listeners: {
'change': {
fn: function(radioGroup, selectedRadio) {
switch (selectedRadio.getGroupValue())
{
case 'a':
radioGroup.findParentByType('fieldset').remove(textFieldB);
radioGroup.findParentByType('fieldset').add(textFieldA);
break;
case 'b':
radioGroup.findParentByType('fieldset').remove(textFieldA);
radioGroup.findParentByType('fieldset').add(textFieldB);
break;
}
radioGroup.findParentByType('fieldset').doLayout();
}
}
}
}]
}]
});
form.render('container');
此作品第一次被選中每個無線,但後續選擇不工作,我期望的那樣。在Firefox中,會出現JavaScript錯誤:
不支持操作「code:」9 [Break on this error] return !!(p.compareDocumentPosition(c)& 16);在ext-base-debug-w-comments.js中
在Chrome中,只有標籤會被添加到表單中。
我期待這種方式工作不正確嗎?
他們仍然會提交,但沒有?不幸的是,有些字段會有相同的名稱(由於服務器端的處理方式)。 – 2010-10-27 16:54:07
你有沒有想過使用fieldset? – SW4 2010-10-27 21:55:45