我希望有一个输入元素(type=text)或文本区域元素,通过触发特定的按键动态验证。这将用于中文拼音输入,例如:
用户在输入元素中键入“ma2”。每次按键时都会触发keydown事件,并且数字2永远不会出现。相反,当用户按下“2”时,“a”将接收一个声调标记,如此:“á”。最终,用户将键入:“má”。
这可以通过使用$(element).val()读取和更改整个输入值来实现,但是,当输入元素具有焦点并且通过调用.val("something")设置其值时,光标将移动到文本的末尾。在大多数情况下,这很好用,因为用户只需在字段末尾继续输入,但是我希望在所有情况下都能正常工作。
...解决此问题的另一种方法是获取/设置输入或文本区域元素中光标的位置。然而,我认为这在javascript中是不可能的。
用户在输入元素中键入“ma2”。每次按键时都会触发keydown事件,并且数字2永远不会出现。相反,当用户按下“2”时,“a”将接收一个声调标记,如此:“á”。最终,用户将键入:“má”。
这可以通过使用$(element).val()读取和更改整个输入值来实现,但是,当输入元素具有焦点并且通过调用.val("something")设置其值时,光标将移动到文本的末尾。在大多数情况下,这很好用,因为用户只需在字段末尾继续输入,但是我希望在所有情况下都能正常工作。
...解决此问题的另一种方法是获取/设置输入或文本区域元素中光标的位置。然而,我认为这在javascript中是不可能的。
所以,Remy肯定是正确的。触发按键并不会让我轻松地输入特殊字符。相反,我捕获keydown事件并设置输入/文本区域的值,然后移动光标。
我没有找到jQuery中好的光标获取/设置方法,但以下内容真正解决了我的问题。当我的最终拼音输入代码稳定后,我将发布链接。现在它已经非常接近了。
http://blog.vishalon.net/Post/57.aspx http://demo.vishalon.net/getset.htm