特定のキーストロークをトリガーすることで動的に検証するinput要素(type = text)またはtextarea要素が必要です。これは中国語の拼音入力に使用されるため、たとえば次のようになります。
ユーザーは入力要素に「ma2」と入力します。キーダウンイベントはキーストロークごとにトリガーされ、2は表示されません。代わりに、ユーザーが「2」を押すと、「a」は次のようなトーンマークを受け取ります:「á」。最後に、ユーザーは「má」と入力します。
これは、$(element).val()を使用して入力値全体を読み取り、変更することで実現できますが、入力要素にフォーカスがあり、.val( "something")を呼び出してその値を設定すると、カーソルが最後に移動します。テキストの。これは、ユーザーがフィールドの最後で入力を続けるだけなので、ほとんどの状況で正常に機能しますが、これがすべての状況で機能することを望んでいます。
...この問題の別の解決策は、inputまたはtextarea要素内のカーソルの位置を取得/設定することです。ただし、これはjavascriptでは不可能だと思います。
だから、レミーは確かに正しい軌道に乗っていた。キーを押すと、とにかく面倒なことなしに特殊文字を入力することはできません。代わりに、keydownイベントをキャッチし、input / textareaの値を設定してから、caretを移動します。
jQueryでのcaretの取得/設定に適したものは何も見つかりませんでしたが、次の方法でその問題を解決できました。安定したら、最終的な拼音入力コードへのリンクを投稿します。今はかなり近いです。
http://blog.vishalon.net/Post/57.aspx http://demo.vishalon.net/getset.htm