ExtJS 2.3.0无线电点击事件触发两次

enxuqcxy  于 2022-09-26  发布在  其他
关注(0)|答案(1)|浏览(160)

我正在使用Extjs 2.3.0
我有一个单选控件,在我的需求中,我想添加一个可以取消选中单选按钮的功能。(通常我们不会取消选中收音机),我如下解决了这个问题

{ boxLabel: 'Yes', name: 'Yes', inputValue: 'Yes', xtype: 'radio',
   onClick: function (e) {
         if (this.checked) {                                        
              this.setValue(false);
         } else {
              this.setValue(true);
         }
   }
 }

这很管用
现在,我的问题是,如果我单击单选按钮,上面的代码可以正常工作,但是如果我单击单选按钮标签,单击事件会触发两次。这是方框标签“是”。
由于事件触发两次,收音机无法检查。
我不明白为什么事件在标签点击时触发两次,而不是在收音机点击时触发。任何人都可以有任何解决方案或变通方法吗?

bzzcjhmw

bzzcjhmw1#

嗯,不可检查的无线电台,听起来很奇怪:)
无论如何,您正在覆盖配置中收音机的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的新类。看看这把小提琴。

相关问题