2011-12-27 24 views
0

我遇到了使用自定义模板和点击监听器的禁用按钮的问题。这里是按钮代码:如何禁用与监听器的自定义按钮

items: [ 
     { 
     autoEl: { 
     tag: 'div' 
     }, 
     cls: 'btn-save uiBtn blue', 
     html: '<label><input type="button" value="SAVE"></label>', 
     xtype: 'button', 
     listeners:{ 
     'click': { 
      element: 'el', 
      fn: function(){ 
      this.submitForm(); 
      } 
     }, 
     scope:this 
     }     
    }, 

不幸的是在click事件处理函数中没有。 disable()dom.disabled = 'true'不起作用。如何禁用这种按钮?

+0

您确定要为按钮(输入标签)而不是标签(

+0

它更加复杂:'el'是整个形式。但我设法解决这个问题。 – 2011-12-27 13:00:58

回答

1

您已更改侦听器的范围,因此它指向除按钮之外的其他内容。您应该使用处理程序参数:

'click': { 
    element: 'el', 
    fn: function(e, sender){ 
     sender.disabled = true; 
     this.submitForm(); 
    } 
}, 
+0

谢谢你。请记住这个解决方案:) – 2011-12-27 13:23:08

0

事实证明,为听众功能定义'this'并不是最好的主意。相反,我将这个保存为按钮的本地属性中的一个参考,并在按钮本身的“命中”上进行操作。

that: this, 
    listeners:{ 
     'click': function(){ 
      this.disable(); 
      this.that.submitForm(); 
     }