中科院云平台架构师,专注于数字化、智能化,技术方向:云、Linux内核、AI、MES/ERP/CRM/OA、物联网、传感器、大数据、ML、微服务。
分类: Web开发
2011-05-26 09:52:26
ExtJs中默认RadioGroup和checkboxgroup的getValue方法是个空方法,直接用的话取不到值,需要重写:
下面是重写CheckboxGroup的代码:
Ext.override(Ext.form.CheckboxGroup, {
getValue: function() {
var v = [];
this.items.each(function(item) {
if (item.getValue()) {
v.push(item.getRawValue());
} else {
v.push('');
}
});
return v;
},
setValue: function(vals) {
var a = [];
if (Ext.isArray(vals)) {
a = vals;
} else {
a = [vals];
}
this.items.each(function(item) {
item.setValue(false); // reset value
for ( var i = 0 ; i < a.length ; i ++ ) {
var val = a[i];
if ( val == item.getRawValue() ) {
item.setValue(true);
}
};
});
}
});
Ext.override(Ext.form.RadioGroup, {
getValue: function() {
var v;
this.items.each(function(item) {
if ( item.getValue() ) {
v = item.getRawValue();
return false;
}
});
return v;
}
setValue: function(v) {
if(this.rendered)
this.items.each(function(item) {
item.setValue(item.getRawValue() == v);
});
else
for(k in this.items) this.items[k].checked = this.items[k].inputValue == v;
}
});
下面是重写RadioGroup的代码:
Ext.override(Ext.form.RadioGroup, {
getValue: function() {
var v;
this.items.each(function(item) {
if ( item.getValue() ) {
v = item.getRawValue();
return false;
}
});
return v;
},
setValue: function(v) {
if(this.rendered)
this.items.each(function(item) {
item.setValue(item.getRawValue() == v);
});
else
for(k in this.items) this.items[k].checked = this.items[k].inputValue == v;
}
});
下面是我的radioGroup代码:
var radio = new Ext.form.RadioGroup({
id : "radio",
fieldLabel : "其他",
baseCls : "x-plain",
columns : 2,
name : "other",
items : [{
inputValue : "0100",
boxLabel : "教育"
}, {
inputValue : "0200",
boxLabel : "考试"
}]
});
然后用Ext.getCmp("other").getValue()就可以取到被选中的值