javascript - 如何向 ExtJS 4 表单中的所有字段 (textField) 添加 onChange 方法

标签 javascript extjs4

如何向窗口内表单的所有“文本字段”添加更改事件?首先,我创建一个带有表单的窗口。所有字段都初始化为 0 值。我想检测用户输入(可能使用 dirtychange),如果大于 1,则更改背景颜色文本字段的。

这是我目前的代码:

Ext.define('WPT.view.HoursPerMonthWindow', {
  extend: 'Ext.window.Window',
  alias : 'widget.hourspermonthwindow',
  title : 'Hours per Months',
  layout: 'fit',
  autoShow: true,   

  initComponent: function() {
    this.items = [
    {
        xtype: 'form',           
        items: [
        {
            xtype: 'textfield',
            name : 'january',
            itemId: 'january',
            fieldLabel: 'January'            
        },
        {
            xtype: 'textfield',
            name : 'february',
            itemId: 'february',
            fieldLabel: 'February'
        }
        ,
        {
            xtype: 'textfield',
            name : 'march',
            itemId: 'march',
            fieldLabel: 'March'
        },
        {
            xtype: 'textfield',
            name : 'april',
            itemId: 'april',
            fieldLabel: 'April'
        },
        {
            xtype: 'textfield',
            name : 'may',
            itemId: 'may',
            fieldLabel: 'May'
        },
        {
            xtype: 'textfield',
            name : 'june',
            itemId: 'june',
            fieldLabel: 'June'
        },
        {
            xtype: 'textfield',
            name : 'july',
            itemId: 'july',
            fieldLabel: 'July'
        },
        {
            xtype: 'textfield',
            name : 'august',
            itemId: 'august',
            fieldLabel: 'August'
        },
        {
            xtype: 'textfield',
            name : 'september',
            itemId: 'september',
            fieldLabel: 'September'
        },
        {
            xtype: 'textfield',
            name : 'october',
            itemId: 'october',
            fieldLabel: 'October'
        },
        {
            xtype: 'textfield',
            name : 'november',
            itemId: 'november',
            fieldLabel: 'November'
        },
        {
            xtype: 'textfield',
            name : 'december',
            itemId: 'december',
            fieldLabel: 'December'
        }                   
        ]           
    }
    ];

    this.buttons = [
    {
        text: 'Save',
        action: 'save'
    },
    {
        text: 'Cancel',
        scope: this,
        handler: this.close
    }
    ];

    this.callParent(arguments);
  }
})

您对这个问题有什么建议吗? 谢谢你的帮助 马内尔

最佳答案

Extjs 提供了一种非常简单的添加监听器的方法,尤其是 extjs 4 mvc 架构。您应该将监听器添加到 View 的 Controller

Ext.define('App.controller.SomeController', {
    extend:'Ext.app.Controller',
    init:function () {
       this.control({
            'hourspermonthwindow > form > textfield':{
                change: this.handleOnChange
            }
       });
    },
    handleOnChange:function(textfield,newValue,oldValue){
    //your code here
    }
});

关于javascript - 如何向 ExtJS 4 表单中的所有字段 (textField) 添加 onChange 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215426/

相关文章:

javascript - 悬停在html元素上时, Electron 窗口调整大小切换

javascript - forEach 不是 JavaScript 数组的函数错误

javascript - 自动版本化外部链接内容

javascript - 如何从 ExtJs 4 中的按钮处理程序访问数字字段值?

javascript - 基数插值曲线下面积

javascript - 当 ng-model 在 ng-repeat 中以编程方式更新时触发 ng-change

javascript - 如何删除 ExtJS 4 中字段的 "name"参数

extjs4 - Extjs 4,在tbar中排列表单字段

javascript - 在 Extjs 中创建一个全局的、持久的对象

Extjs 3 到 Extjs 4