最近做一个项目,用到Ext.form.textarea, 在监听事件中添加了keyup事件,并将enableKeyEvents属性设为true,但并不执行该事件,不知道为什么? Ext.form.textfield则没有任何问题。郁闷,哪位高手能否指点一二!谢谢!

解决方案 »

  1.   

    我不知道你的为什么不可以,我修改了examples/form/absform.js,你拷贝回去试试看absform.html。/*
     * Ext JS Library 2.2.1
     * Copyright(c) 2006-2009, Ext JS, LLC.
     * [email protected]
     * 
     * http://extjs.com/license
     */Ext.onReady(function() {
        var form = new Ext.form.FormPanel({
            baseCls: 'x-plain',
            layout:'absolute',
            url:'save-form.php',
            defaultType: 'textfield',        items: [{
                x: 0,
                y: 5,
                xtype:'label',
                text: 'Send To:'
            },{
                x: 60,
                y: 0,
                name: 'to',
                anchor:'100%'  // anchor width by percentage
            },{
                x: 0,
                y: 35,
                xtype:'label',
                text: 'Subject:'
            },{
                x: 60,
                y: 30,
                enableKeyEvents: true,
                name: 'subject',
                anchor: '100%',  // anchor width by percentage
                listeners: {
                 keyup: function(src, evt){
                 alert(src.getValue());
                 }
                }
            },{
                x:0,
                y: 60,
                xtype: 'textarea',
                name: 'msg',
                enableKeyEvents: true,
                anchor: '100% 100%',  // anchor width and height,
                listeners: {
                 keyup: function(src, evt){
                 alert(src.getValue());
                 }
                }
            }]
        });
        var window = new Ext.Window({
            title: 'Resize Me',
            width: 500,
            height:300,
            minWidth: 300,
            minHeight: 200,
            layout: 'fit',
            plain:true,
            bodyStyle:'padding:5px;',
            buttonAlign:'center',
            items: form,        buttons: [{
                text: 'Send'
            },{
                text: 'Cancel'
            }]
        });
        window.show();
    });
      

  2.   

        我用的也是2.2,你的代码我测试了一下,没有问题,可将你的代码放到我的代码里就不行了。你是将textarea放在FormPanel里,而我是将其放在Panel的fieldset里,跟这有关系吗?
      

  3.   

    没有任何关系, 方在哪儿都一样, 你看到textarea的构造函数了没?它是一个完整的可独立的对象。
    给你例子:
    textarea.jsExt.onReady(function(){
        var p = new Ext.Panel({
            title: 'My Panel',
            collapsible:true,
            renderTo: 'tt',
            width:400,
            height: 300,
            items:[
         {
                x: 100,
                y: 0,
                xtype: 'textarea',
                name: 'msg',
                enableKeyEvents: true,
                height:'100%',
                width:'100%',
                listeners: {
                 keyup: function(src, evt){
                 alert(src.getValue());
                 }
                }
         }
            ]
        });
    });textarea.html:<html>
    <head>
        <title>Textarea</title>
        <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/>    <!-- GC -->
        <!-- LIBS -->
        <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
        <!-- ENDLIBS -->    <script type="text/javascript" src="../../ext-all.js"></script>    <script type="text/javascript" src="textarea.js"></script>
        <link rel="stylesheet" type="text/css" href="forms.css"/>    <!-- Common Styles for the examples -->
        <link rel="stylesheet" type="text/css" href="../shared/examples.css"/>
    </head>
    <body>
    <div id="tt"></div>
    </body>
    </html>有问题多看例子,多看extjs.com/docs.
    问别人是问不到什么的, 因为懂得人太少了。
    我知道得也不多, 今天要不是你问关于listeners的事情,我还不会添加listener,然后我就在examples目录下面搜索listener, 很快例子就出来了。
      

  4.   

    目前我的问题还没有解决,还是谢谢你!你给的代码我测试过了,是没有问题,但把握的代码放进去就不行,change事件可以用,textfield的keyup事件可以用,这让我实在有些郁闷,继续研究吧!
      

  5.   

    加上这些试试
    Ext.override(Ext.form.TextArea, {
        onKeyUp : function(e){
            if(!e.isNavKeyPress() || e.getKey() == e.ENTER){
                this.autoSize();
            }
            Ext.form.TextArea.superclass.onKeyUp.call(this, e);
        }
    });
      

  6.   

    enableKeyEvents: true要把enableKeyEvents属性设置为true
      

  7.   

    我今天也遇到同样的困难,一下是我的代码,也不出现提示:
    var mn = new Ext.form.TextField({
    name : 'searchusername',
    id : "searchusername",
    width : 210,
    scope : this,
    enableKeyEvents : true,
    listeners : {
    'keyup' : function(o, evt) {
    alert(3);
    }
    }
    });