我正在使用Extjs 2.3.0
我有一个无线电控制,根据我的要求,我想添加一个功能,我可以取消选中radiobutton。 (通常我们不取消选中收音机),我按如下方式解决了这个问题
{ boxLabel: 'Yes', name: 'Yes', inputValue: 'Yes', xtype: 'radio',
onClick: function (e) {
if (this.checked) {
this.setValue(false);
} else {
this.setValue(true);
}
}
}
这很好用
现在,我的问题是,如果我点击radiobutton,上面的代码工作正常,但如果点击 Radiobutton标签,点击事件会触发两次。这是标签'是'。
当事件发生两次并且收音机无法检查时。
我不明白为什么事件会在标签点击时触发两次而不是点击无线电。 任何人都可以有任何解决方案或解决方法吗?
答案 0 :(得分:1)
无论如何,你在你的配置中覆盖了无线电的onClick方法(继承自Ext.form.CheckBox),如下所示:
// private
onClick : function(e){
if (!this.disabled && !this.readOnly) {
this.toggleValue();
}
e.stopEvent();
},
因此,您需要在原始函数中完成事件传播。此外,我建议也使用toggleValue函数,因为这可以确保正确取消选中名称名称的其他无线电:
onClick: function(e) {
if (!this.disabled && !this.readOnly) {
if (!this.checked) {
this.toggleValue();
} else {
this.setValue(false);
}
}
e.stopEvent();
},
顺便说一句,最好的办法是创建一个扩展Ext.form.RadioBox的新类。查看this fiddle。