javascriptの超初心者です。
電話応対の記録を入力する、お問い合わせ管理アプリのカスタマイズを試しています。
入力担当者より「電話番号や郵便番号、メールアドレスなどはカーソルを合わせた時点で半角で入力でき、名前などの項目では全角になるようにしてほしい」と要望がありました。
CSSの「ime-mode」はIEのみしか対応していない上、CSS-UIの仕様書から削除される(された?)との記事も見かけ、CSSでの対応は不可と判断しました。
そこで、javascriptで代替できればと思ったのですが、当初の要望である「入力項目にカーソルを合わせた時点で全角・半角が切り替わる」ということはそもそも実現可能なのでしょうか?
いくらかサンプルを調べてみたところ、「全角で入力後、項目からカーソルが離れた時点で半角に変換する」などの対応は見かけました。
ですが、入力後の変換だとメールアドレスの入力時にひらがな入力になってしまうのが入力者からすると面倒かな…と感じました。
何か、上記に当てはまるようなサンプルコードなどありましたらご教示いただけませんでしょうか?
よろしくお願いいたします。
hasei さん
cstapの瀧ヶ平です。
調べてみたところやはりIMEの全角/半角を切り替えすることは現状不可能そうです。
おっしゃる通りCSSのime-modeはfirefoxやIEのみの対応であり、W3CのCSS標準仕様からも削除されているため、あまり現実的な手段ではないです。
また、JavaScriptからIMEを直接制御するような方法も今のところ存在しないようです。
そのため、DOM操作によって目的の入力フォームのonkeydownメソッドで半角文字列以外を削除するような方法での実装をするほかなさそうです。
DOM操作であるため、アップデートの度にメンテナンスをする必要が出る可能性などもありあまりお勧めはできませんが、全角入力を禁止であれば可能かと思います
haseiさん
カーソルが合った段階で切り替えというのは難しい気がします。
記載にもある通り、入力後全角半角を変換するというのが
一般的な方法かと思います。私もその方法で変換させています。
全角半角が自動変換さえれば、基本的な入力時は気にせず済みそう
ですが、メールアドレス等は自身で形式を選択しないといけないですね。
瀧ヶ平さま、サクラエビさま
ご回答いただきありがとうございました。
お礼が遅くなりまして申し訳ありません。
やはりカーソルがあった時点でというのは難しいのですね。。
なかなかソースを見かけないため、みなさんどのようにされているのかと気になって質問してみました。
JS初心者ゆえDOMを操作するというのも難しいと思われますので、全角入力後に半角に変換する、という方法にしようと思います。
また記述に関してご相談させていただくこともあるかと思いますが、どうぞよろしくお願いいたします。
system
(system)
クローズされました:
5
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。