2013-10-03 2 views
1

Я новичок в sencha.The OnKeyPress случае текстового поля не кажется, стрелять, когда он используется в itemtpl.This мой код: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 ", когда список загружается. Когда нажата клавиша, событие нажатия клавиши не срабатывает. Мое ожидание запуска моей функции при нажатии клавиши с клавиатуры. Пожалуйста, помогите .. Я искал решение долгое время.

+0

Это не потому, что стрельбы '' this' в {[this.myFunction()]} 'в его контексте, относится к глобальному объекту, а не к' itemTpl'. –

+0

Спасибо за ваш ответ. Мне нужно передать значение магазина из itemtpl в функцию. Для этого я задал этот вопрос. Когда я написал функцию в контроллере, значение получения не определено. Вот код onkeypress = 'myFunction (values.itemkey)' – almakki

+0

Пойдите с anser from kevhender и передайте аргумент функции. –

ответ

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 
    } 
}); 

Update (на основе ваших комментариев в другом месте):

Перейти аргументы, просто используйте стандартную нотацию для значения хранилища в 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>' 
) 
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> 
+0

Спасибо за ваш ответ. Мне нужно передать значение магазина из itemtpl в функцию. Для этого я задал этот вопрос. Когда я написал функцию в контроллере, значение получения не определено. Вот код onkeypress = 'myFunction (values.itemkey)' – almakki

+0

OK спасибо за ваше время и внимание..Он работал для меня – almakki

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>', 
+0

Это мой обработанный код – almakki

Смежные вопросы