textarea 的 Keyup 事件

Posted

技术标签:

【中文标题】textarea 的 Keyup 事件【英文标题】:Keyup event for textarea 【发布时间】:2015-07-23 11:37:52 【问题描述】:

我正在使用虚拟键盘插件http://mottie.github.io/Keyboard/。 在这里,我想在 mottie textarea 中触发一个按键事件,以便我可以使用物理键盘输入所选语言中的文本。

我试过这样的

$('textarea[name=Notes]').keypress(function (e) );

还有这样的

$("div.ui-keyboard-preview-wrapper").find('textarea[name=Notes]').keypress(function (e) );

我也试过这样

$(".ui-keyboard-preview").keypress(function (e) );

但是,它不会触发事件。有没有办法做到这一点?

【问题讨论】:

缺少相关上下文,但您尝试过委派活动吗? 你能解释一下你到底想用这段代码做什么吗?该插件会触发keyboardChange event,每次更改输入/文本区域。如果要修改文字,there are a few examples on the Home wiki page. 【参考方案1】:

尝试input 事件,如下面的代码 sn-ps。它将跟踪textarea 字段中的更改。对于老版本的IE,可以使用propertychange事件来跟踪变化。

示例代码 sn-ps:

$(document).on('input propertychange', "textarea[name='Notes']", function () 
    alert("Text Updated");
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<textarea name="Notes" rows="4" cols="50">
Your text 
</textarea>

注意:

input 事件将在文本区域的内容发生时触发 改变。但它不会保存的按键信息 event.which。相反,您可以使用 keypresskeydownkeyup 事件单独跟踪关键代码。

但是对于虚拟键盘,您可以尝试类似Fiddle

希望对你有帮助!

【讨论】:

谢谢约翰。现在关键事件正在触发。但是遇到另一个问题。 e.which 和其他一些属性未定义。在我的程序中,我还检查用户是否按下了特殊键,如 shift 和 ctrl。而且这些属性也即将未定义。如何解决? @Bhola 请检查一下。 ***.com/questions/17384218/jquery-input-event 对我之前未经测试发布的评论感到遗憾。希望您现在已经理解了这个概念。 再次感谢约翰。我从这个链接中得到了这个想法,最后我想出了 $(document).on('keypress',"textarea[name='Notes']", function (e) ); .我也是第一次知道 input 事件。从我这边+1。谢谢 @Bhola 欢迎您。

以上是关于textarea 的 Keyup 事件的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Cleditor 在 keyup 上获取 textarea 值

jquery:在 keyup 上执行此操作,除非该人在文本区域或输入中

jquery实现显示textarea输入字符数

vue使用textare如何正确统计输入字符个数

jQuery获取textarea文本

js 实现textarea输入字数提示