🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

23622閲覧

JavascriptでIMEの制御

cisdur

総合スコア46

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2017/09/02 23:13

編集2017/09/03 21:29

HTML、Javascriptで、ユーザーが単語を追加できる英単語帳のようなものを作っております。

日本語英語
りんごapple
ももpeach
メロンmelon
......

という感じのもので、見出し以外のセルにはinputが入っています。
ユーザーは、「りんご」→tab→「apple」→tab→「もも」→「peach」……と、tabで移動しながら単語帳を作っていきます。

そこでご相談なのですが、現状ではセルを移動するごとに、IME状態の切り替えが必要になっています。
これを、自動で行うことはできないでしょうか?
CSSのime-modeなら可能なはずですが、chromeでは使えないので……。

今回は、「値のチェック」ではなく、「IME切り替えの手間の軽減」が目的です。
英語の欄に「hippopotamus(省略:hippo)」のように日本語が入ることもあり得る(もちろん、この場合はカッコ内を別カラムにしたほうがいいでしょうが)ので、むしろ値のチェックでアルファベットのみに制限したりするのは不適です。

よろしくお願いいたします。

####追記
>think49様
>逆もまたしかり
その通りです。どちらの欄にも、どのような文字でも入力できるようにしたいと考えております。ただし、日本語の欄に英語が入ったり、英語の欄に日本語が入ったりすることは、かなり例外的なケースと考えてください。

>辞書変換で入力
IMEの機能や、F10キーでアルファベット化することはあると思います。ただ、今回は、半角にしたい部分は郵便番号などではないため、「押下したキーと、入力したいアルファベットが異なる」ことはないはずです(かな入力の場合などを考えると、実はなくはないのでしょうが……)。「apple」なら、「あっpぇ」と打ってからF10などを押すとすれば、最初から直接入力になっていたほうがいいかな、という考えです。

>オプションで無効化
確かに、そうですね。そのようにしようと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2017/09/03 13:52

英語の欄に日本語が挿入される可能性があるのなら、逆もまたしかり、と思いますがが、どのような挙動を期待しているのでしょうか。 個人的にはIMEモードは意識的に直接入力/ローマ字入力を切り替えるので、勝手に切り替えられると混乱してどのようなルールで切り替わるのかを把握して慣れるのに時間がかかるイメージがあります。また、英数文字が期待される入力ボックスでも辞書変換で入力する人もいます。各々で最適化された方法があるので、自動化するならオプションで無効化出来る配慮があると良いと思います。
think49

2017/09/04 03:38

「辞書変換で入力」とは、「js」と入力→変換で「JavaScript」を入力、のようなテクニックを差します。よく使う単語を辞書登録して入力の手間を省くメリットがあります。
think49

2017/09/04 03:49 編集

「どのような挙動を期待しているのでしょうか」とは、「日本語の入力ボックス」「英語入力ボックス」でそれぞれどのようなルールでIMEモードを切り替えるか、が示されてないので具体的に示して欲しい、という意味です。自明と思われるかも知れませんが、英語の入力ボックスで日本語を入力することも考慮しているようだったので、場合によっては前の入力モードを覚えて、IMEモードを切り替える方法(日本語と英語でそれぞれ独立して入力モードを記憶する)など、なにがしかの考えがある可能性もあると考えました。残念ながら、私が探す限りでは全てのブラウザで入力モードを切り替える方法は見つかりませんでしたが、要件は具体的な方が回答を得やすいと思います。
guest

回答2

0

Input Method Editor API

標準化はされていますが、残念ながら IE11, Edge のみがサポートしています(2017/09/04現在)。
https://www.w3.org/TR/ime-api/
http://caniuse.com/#feat=ime

Re: cisdur さん

投稿2017/09/04 03:47

think49

総合スコア18189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ime-mode
https://developer.mozilla.org/ja/docs/Web/CSS/ime-mode
見てのとおりime-modeは廃止されており、UAに対してはサポートするな、作成者に対しては使うなということになっています。Chromeはサポートしないでしょう。

inputmode属性
https://www.w3.org/TR/html/sec-forms.html#input-modalities-the-inputmode-attribute
https://developer.mozilla.org/ja/docs/Web/HTML/Element/Input
次に考えられるのがinputmode属性ですが、現状対応ブラウザがなく、Firefoxがフラグ設定変更でサポートするのみです。
http://caniuse.com/#search=inputmode
手元のFxでフラグを立てて確認してみたものの、"numeric"以外は認識せず、それさえ挙動が変わっているようにはみえなかったです。

tabindex
https://developer.mozilla.org/ja/docs/Web/HTML/Global_attributes/tabindex
IME切り替えが手間ということなので、日本語だけまとめて入力することが考えられます。

また、実装がかなり面倒になると思いますが、Google翻訳に見られるような仮想キーボードを使うということも考えられます。

MS-IMEとHTML5のinput[type=xxx]
http://qiita.com/forty4_jp/items/db90141ea02ecafb0967
type="url"などに設定すると、MS-IMEにおいて変換モードが変わるというもの。悪手ですが一応あげておきます

投稿2017/09/04 02:08

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問