当前位置:  开发笔记 > 编程语言 > 正文

使用jQuery触发按键...并指定按下了哪个键

如何解决《使用jQuery触发按键并指定按下了哪个键》经验,为你挑选了1个好方法。

我想有一个输入元素(type = text)或textarea元素,通过触发特定的击键动态验证.这将用于中文拼音输入,例如:

用户在输入元素中键入"ma2".keydown事件触发每次击键,2永远不会出现.相反,当用户按下"2"时,"a"将收到音调标记,如下所示:"á".最后,用户将输入:"má".

这可以通过使用$(element).val()读取和更改整个输入值来实现,但是,当输入元素具有焦点并且通过调用.val("something")设置其值时,光标移动到结尾的文字.这在大多数情况下工作正常,因为用户只是在字段的末尾继续键入,但我希望这在所有情况下都能正常工作.

...此问题的另一个解决方案是获取/设置光标在输入或textarea元素中的位置.但是,我不认为这在javascript中是可行的.


所以,雷米肯定是在正确的轨道上.触发按键不允许我输入特殊字符而不会有很多麻烦.相反,我捕获keydown事件并设置输入/ textarea的值,然后移动插入符号.

我没有找到任何有关插入jQuery的插入符号的好处,但以下内容确实打破了我的问题.当它稳定时,我会发布一个指向我最终拼音输入代码的链接.它现在非常接近.

http://blog.vishalon.net/Post/57.aspx http://demo.vishalon.net/getset.htm



1> Remy Sharp..:

您可能没有太多运气触发按键 - 我相当确定除非按键受信任(即源自浏览器),否则它将无法被接收.

但是,您可以进行文本替换并将克拉插回原处 - 而不是将其射入字符串的末尾.您需要使用setSelectionRange和createTextRange(对于IE).

我已经整理了一个小小的演示 - 你会看到的替代品与真实的单词不匹配,但它显示了它是如何工作的:

http://jsbin.com/emudi/(编辑源http://jsbin.com/emudi/edit)

诀窍是注意克拉的位置,使用substr替换找到的单词(而不是正则表达式以避免替换错误的匹配),然后将克拉重新放置在新单词的末尾.

更换是在空间印刷机上触发或模糊离开.关于此的说明 - 您可以触发特定字符(即'2')的替换 - 但我不建议在每个按键上搜索替换.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有