困っていること
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
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。