Sencha touch 中的 onkeydown

Posted

技术标签:

【中文标题】Sencha touch 中的 onkeydown【英文标题】:onkeydown in Sencha touch 【发布时间】:2014-10-24 12:23:09 【问题描述】:

javascript 有three events 用于按键、keyup、keypress 和 keydown。 由于某种原因,Sencha Touch 只支持他们的 keyup 事件。我想在它更改文本字段中的值之前捕获事件(可能是 keydown 或 keypress)。捕捉 keydown 事件将使这成为可能,而且它应该更快。用keyup效果有点慢。

最后的目标是允许用户只输入数字并自动添加小数和千位分隔符。这目前可以通过 keyup 事件实现,但速度较慢。作为用户,您可以看到文本发生变化,然后再次被更改。

我将 keydown 事件添加到文本字段的代码:

initialize: function()

    this.down('textfield[name=amountTotal]').onkeydown
    = MyApp.app.getController('MyController').handleInput;

我已经检查过,当此代码执行时,找到了文本字段,并且控制器函数确实包含我想要执行的正确函数。我还将该函数添加到我的视图文件中。

但它不会到达我的 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;

小提琴:https://fiddle.sencha.com/#fiddle/caj

【讨论】:

谢谢它的工作,唯一的缺点是我没有直接将 sencha 文本字段作为参数。那么如何找到呢?我不能使用基于名称的选择器,因为有一个像这样的字段列表。

以上是关于Sencha touch 中的 onkeydown的主要内容,如果未能解决你的问题,请参考以下文章

SENCHA:如何通过单击 SENCHA touch 中的添加/删除按钮动态添加/删除文本字段

sencha touch 中的操作栏

从 Sencha touch 中的列表创建另一个列表

sencha touch 中的列表掩码

Sencha Touch 中的 POST 请求

sencha Touch 中的音频