1

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

 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”。按下键时,按键事件不会触发。我希望在从键盘按下键时触发我的功能。请帮助..我一直在寻找解决方案时间。

4

3 回答 3

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>'
)
于 2013-10-03T12:01:15.033 回答
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>
于 2013-10-03T13:22:54.913 回答
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>',
于 2013-10-10T04:48:39.107 回答