在sencha touch中的itemtpl上的OnKeyPress事件

时间:2013-10-03 05:53:30

标签: extjs sencha-touch onkeypress

我是sencha的新手。当在itemtpl中使用时,文本框的onkeypress事件似乎没有被触发。这是我的代码:

 itemTpl: new Ext.XTemplate('<tpl><table width="100%"><tr><td width="10%"><div class="Drop_Down" id="pat_dropId"><input  type="text" onkeypress="{[this.myFunction()]}" </div></td></tr></table><tpl>',
 {
   myFunction: function(itemKey)
{
console.log('myFunction');
 }
}

控制台在加载列表时记录'myFunction'。当按下一个键时,按键事件不会触发。我期望在键盘上按键时触发我的功能。请帮助..我一直在寻找解决方案很长时间。

3 个答案:

答案 0 :(得分:2)

Lorenz是对的,this在修改文本字段时不引用itemTpl。更改处理程序以调用全局函数,可能是控制器中的某些内容:

onkeypress="MyApp.app.getController(\'MyController\').myFunction()"

MyController.js:

Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',
    //other config here

    myFunction: function() {
         //do something here
    }
});

更新(根据您在其他地方的评论):

要传递参数,只需在XTemplate中使用常规符号表示商店值。还要确保用引号括起参数,如果它不是数字/布尔值:

itemTpl: new Ext.XTemplate(
    '<tpl><table width="100%"><tr>',
        '<td width="10%">',
            '<div class="Drop_Down" id="pat_dropId">',
                '<input  type="text" onkeypress="MyApp.app.getController(\'MyController\').myFunction(\'{myStoreValue}\')">',
            '</div>',
        '</td>',
    '</tr></table><tpl>'
)

答案 1 :(得分:0)

更改你的Ext.XTemplate代码:

itemTpl: new Ext.XTemplate("<tpl><table width='100%'><tr><td width='10%'><div             class='Drop_Down' id='pat_dropId'>
<input  type='text' onkeypress='myFunction(this)'</div> </td></tr></table><tpl>")

函数在index.html中定义:

<script type="text/javascript">
    function myFunction(that){
        //your code 
    }
</script>

答案 2 :(得分:0)

itemTpl: new Ext.XTemplate('<tpl><table width="100%"><tr><td width="10%"><div class="Drop_Down"><input  style="color:green;display:block;width:50px;text-align:center;" type="text" pattern="\d*" id="{ItemKey}" onkeyup="myapp.app.getController(\'myappController\').TextboxKeyUp(this)" onfocus="myapp.app.getController(\'myappController\').TextFocus(this)" ></div></td></tr></table><tpl>',