我想知道如何将 onClick() 方法添加到 Ext.form.Text 组件。
如果组件是一个按钮,那么我所要做的就是添加这一行:
handler: function() {alert("Hello!");}
但是如果组件是文本字段,那一行就不起作用了。看下面的例子:
Ext.create('Ext.form.Panel', {
title: 'Contact Info',
width: 300,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [{
id: 'myButton',
xtype: 'textfield',
name: 'name',
fieldLabel: 'Name',
style: 'background-color: #ddd;',
allowBlank: false,
handler: function() {Ext.getCmp('myButton').setValue("TEXT")} // Does not work!
}, {
xtype: 'button',
name: 'email',
fieldLabel: 'Email Address',
style: 'background-color: green',
textfieldStyle: 'background-color: green',
handler: function() {Ext.getCmp('myButton').setValue("TEXT")} // Works!
}]
});
最佳答案
Handler 是默认 Action 监听器的快捷方式。对于按钮,这显然是单击,但文本字段没有默认操作。此外,文本字段实际上不会触发点击事件,但您始终可以向 dom 元素添加事件处理程序:
Ext.create('Ext.form.Panel', {
title: 'Contact Info',
width: 300,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [{
id: 'myButton',
xtype: 'textfield',
name: 'name',
fieldLabel: 'Name',
style: 'background-color: #ddd;',
allowBlank: false,
listeners: {
render: function() {
this.getEl().on('mousedown', function(e, t, eOpts) {
Ext.getCmp('myButton').setValue("TEXT")
});
}
}
}]
});
关于extjs - 如何将 onClick 方法添加到 TextField(ExtJS 框架)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9206768/