Ext.button click() method

17

ExtJS 4.1.

在 Ext.button 类中是否存在类似于 Ext.button.click(); 方法?

是否有一种方法可以编程方式“点击”一个按钮?


抱歉,如果这是一个愚蠢的问题,但你确定你正在使用 ExtJS 1.1 吗?因为 ExtJS 2 已经很长时间没有得到支持了,所以你使用 1.1 看起来有些奇怪。 - Izhaki
5
无法相信如此受欢迎的事件不是该框架的一部分!最终采用了笨拙的button.getEl().dom.click() - Geo
9个回答

25

如果你有一个MVC结构,你可以触发按钮的点击事件,如果在控制器中监听了该事件并且有相关联的函数,它将被调用。

button.fireEvent('click', button);

1
当您使用处理程序而不是单击侦听器时,您将无法在此组件上触发fireEvent('click'),事件将不会执行。因此,最好的方法不是使用处理程序,而是使用单击侦听器+ button.fireEvent('click'); 来模拟单击。 - s.webbandit
2
只是提醒一下,由于某种原因,这不会触发处理方法。如果该处理方法是按钮配置的一部分,请注意。 - dbrin
当按钮被禁用时,点击事件是否仍会触发?因为这将强制您测试禁用属性以启动相关函数... - Guid
它仍然会被触发。 - Johan Haest
谢谢s.webbandit。这就是为什么Fireclick无法工作的原因,因为大多数人使用处理程序而不是监听器。 - Dev G
显示剩余3条评论

11

不要认为你链接的Sencha论坛帖子是真实的(2008年)。但在DOM元素上调用click()的想法很好! - s.webbandit
dom.click(); 是什么?它来自哪里? - s.webbandit
@s.webbandit 这是基本的 Web API 事件之一:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/click_event - Sergey Bogdanov

6

ExtJS 4.2.1

Ext.get('component-id-of-extjs-button').el.dom.click();
Ext.get('toggle-button2').el.dom.click();

对我来说可行。


2

如果使用处理程序按钮,您可以直接调用按钮的函数。

考虑到button是一个Ext JS组件,您可以使用以下方法:

   button.handler(button); 

或者如果您想触发“click”事件的功能:

   button.listeners.click(button);

那也可以用来调用不同的按钮事件。

2

由于我需要用到很多按钮,因此更容易实现一个覆盖按钮类的方法,该方法添加了一个点击功能:

Ext.define('Ext.override.Button',{
    override:'Ext.button.Button',
    click:function() {
        this.getEl().dom.click();
    }
})

在将此覆盖添加到代码库后,以下内容就可以轻松实现:

Ext.getCmp("MyButton").click()

与 fireEvent 或 fireHandler 不同,这个功能适用于所有类型的按钮-无论它们是否具有单击事件或处理程序,或者它们是否是切换按钮,其中点击的按钮也必须标记为已按下。

1
如果您需要执行按钮的“handler”,只需运行以下代码(已在ExtJS 4.2中测试)。
button.fireHandler()

0
 document.getElementById("someButtonId").click(); 

0

其他答案都不适用于我,但我找到了一个更简单的解决方案:

var button=Ext.get('the_id_div');
button.dom.click();

0
如果你想在测试脚本中这样做,可以看看我的Ext.ux.Test库。如果你需要它用于其他用途,我建议重新考虑你的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接