質問するログイン新規登録
JavaScript

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

2回答

1209閲覧

reactのinputタグでひらがな→カタカナに自動変換ができない

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2023/07/03 05:10

編集2023/07/03 05:11

0

0

reactでinputタグにひらがなを入力するときカタカナに自動変換したいですが、

ひらがな→ひらがな(自動変換しない場合)
PC版、不具合なし
スマホ版、不具合なし

ひらがな→カタカナ(自動変換する場合)
PC版、不具合なし
スマホ版、不具合あり

スマホで入力すると正しく自動変換ができません。
これを解決する方法がわかりません、、

※下記のパスで動作確認やソースコード確認ができます。
https://codepen.io/kcjfgnl9205/pen/jOQwrNr

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

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

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

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

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

guest

回答2

0

元のソース見ましたが、込み入った作業は不要で、useStateで入力値を同期するだけで実現できます。

ts

1import {useState} from 'react' 2const [word,setWord] = useState(null) 3//文字のバインド 4 const bindWord = (e)=>{ 5 let word = e.target.value 6 word = word.replace(/[\u3041-\u3096]/g, function(match) { 7 let chr = match.charCodeAt(0) + 0x60; 8 return String.fromCharCode(chr); 9 }) 10    setWord(word); //入力文字の同期 11 } 12 13return( 14 <input type="text" onChange={bindWord} value={word}/> 15)

あとは変換部分を適宜useCallbackフックなどを使っておけばいいのかなと思います。

ts

1import {useState,useCallback} from 'react' 2//文字のバインド 3export const App = ()=>{ 4 const [word,setWord] = useState('') 5 const replace_word = useCallback((wd)=>{ 6 return wd.replace(/[\u3041-\u3096]/g, (match)=>{ 7 let chr = match.charCodeAt(0) + 0x60; 8 return String.fromCharCode(chr); 9 }) 10 },[]) 11 const bindWord = (e)=>{ 12 let word = e.target.value 13 word = replace_word(word) 14 setWord(word); //入力文字の同期 15 } 16 return( 17 <> 18 <input type="text" onChange={bindWord} value={word}/> 19 </> 20 ) 21} 22export default App;

投稿2023/07/03 08:50

編集2023/07/03 09:12
FKM

総合スコア3662

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

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

0

入力中に変換するとIMEと干渉してトラブルを起こしやすいです。

動作性を考えて問題がないなら、フォーカスが外れた瞬間に変換をかけるのが妥当かと思います。

投稿2023/07/03 06:02

maisumakun

総合スコア146702

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問