如何在不触发更改事件的情况下选中复选框?

时间:2011-05-11 08:53:35

标签: javascript extjs javascript-events

我有一个简单的复选框:

r = new Ext.form.Checkbox({
    listeners: {
        check: function(checkbox, checked) {
        }
    }
}

r.setValue(true);

如何检查复选框而不进行fireevent检查(我想通过鼠标点击进行检查)? (setValue不起作用)。

5 个答案:

答案 0 :(得分:28)

您应该在设置值之前暂停事件并在此之后恢复事件。例如:

myCheckBox.suspendEvents(false); // Stop all events. 
                                 //Be careful with it. Dont forget resume events!
myCheckBox.setValue(!myCheckBox.getValue()); // invert value
myCheckBox.resumeEvents(); // resume events

答案 1 :(得分:1)

为什么不设置r.checked = true,这不起作用吗?

答案 2 :(得分:1)

  

为什么不设置r.checked = true,这不起作用吗?

设置选中的属性仅对非渲染控件有影响,以分配初始控制值。渲染后,您无法使用它来更改值。

暂停/恢复事件是改变控制值而不发送通知的好习惯。

此外,您可以将检查状态立即置于dom元素:

item.el.dom.checked = true;

答案 3 :(得分:0)

我在谷歌搜索之前已经尝试了接受的答案,但它在4.1.3中没有用。以下是:

myCheckBox.setRawValue(true);

希望这有助于未来的googlers。

答案 4 :(得分:0)

在设置值之前调用suspendEvents(false),之后调用resumeEvents()是比setRawValue更通用的方法,因为如果您使用转换器(例如,1是{{1} }}和true0)它们将继续有效。