ExtJS 2.3。 0无线电点击事件发射两次

时间:2014-01-23 09:16:20

标签: extjs onclick radio

我正在使用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标签,点击事件会触发两次。这是标签'是'。

当事件发生两次并且收音机无法检查时。

我不明白为什么事件会在标签点击时触发两次而不是点击无线电。 任何人都可以有任何解决方案或解决方法吗?

1 个答案:

答案 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