0

Javascript содержит three events для нажатия клавиш, нажатия клавиш, нажатия клавиш и нажатия клавиш.
По какой-то причине Sencha Touch поддерживает только событие keyup. Я хочу поймать событие (возможно, keydown или keypress), прежде чем он изменит значение в текстовом поле. Захват события keydown сделает это возможным, также это должно быть намного быстрее. С помощью keyup эффект немного медленный.onkeydown in sencha touch

И, наконец, цель состоит в том, чтобы позволить пользователю вводить только число и добавлять десятичные и тысячи раздельников. В настоящее время это возможно с событием keyup, но медленным. В качестве пользователя вы можете видеть, как текст меняется, а затем снова изменяется.

Мой код для добавления KeyDown события в текстовом поле:

initialize: function() 
{ 
    this.down('textfield[name=amountTotal]').onkeydown 
    = MyApp.app.getController('MyController').handleInput; 
} 

Я проверил, что при выполнении этого кода текстовое поля будет найдено и функция регулятора действительно держит правильную функцию, которую я хочу выполнить. Я также добавил функцию в свой файл просмотра.

Однако он не достигнет моей ручки. Входная функция.

Я знаю Sencha does not support other events, но это должно быть возможно с помощью только чистого javascript.

ответ

1

Вы почти получили его.

initialize: function() { 
    var textfield = this.down('textfield[name=amountTotal]'); 
    textfield.bodyElement.dom.onkeydown = MyApp.app.getController('MyController').handleInput; 
} 

Fiddle: https://fiddle.sencha.com/#fiddle/caj

+0

Спасибо, что работает, единственным недостатком является то, что я не получаю Сенча текстовое поле в качестве аргумента напрямую. Итак, как это найти? Я не могу использовать селектор, основанный на имени, потому что есть список таких полей. – MrFox