困っていること
Chromeで、<input type="date">にIMEを通して入力しようとすると、入力できない上、フォーカスが外れてしまい困っています。ポイントとしては、以下の通りです。
<input type="date">にIMEがoffの状態で進入すると、「半角/全角」キーを押してもIMEはonにならない(←別に問題はない)。言語バーからIMEをonにすることはできる(←別に問題はない)。<input type="date">にIMEがonの状態で進入すると、IMEの状態はそのまま(←別に問題はない)。<input type="date">にIMEがonの状態で文字キーを押下すると、入力ができない(←別に問題はない)。そして、前の(フォーカスが当たる)要素にフォーカスが移る(←困る)。
<input type="time">でも同様の問題が起こるようで、過去にteratailに質問がありました<input type="time">で全角入力するとフォーカスが外れてしまう。解決済みとなっていますが、私の問題意識は少し違うところにあるので、似たような質問ですが投稿させていただきました。
私としては、「フォーカスが外れる」ところをどうにかしたいです。IMEを制御したりする必要はありません。IMEがonで入力しようとすると、「入力はできず、何も起こらない」でいいのです。その実現方法をご教授いただきたく思います。
考えられる解決策
- UI系ライブラリを利用する。
→それだけのために導入するのは抵抗があります。カレンダーピッカーだけ導入したら見た目も統一的でなくなりますよね。見た目だけならCSSでどうにでもなりますが、値取得の方法などが他のinput要素と異なったりすると、コードがちぐはぐになりそうです。 <input type="text">にして、バリデーションで日付判定。
→カレンダーピッカーなど、<input type="date">の機能が使えなくなるのは困ります。onkeydownイベントで、event.keyCodeが229(IMEがon)のときに、どうにかする。
→本命だと思いますが、フォーカスを移さない方法がわかりません。event.preventDefault()ではダメでした。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。