質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

582閲覧

Inputフィールドに施したカンマ処理がIOS各種ブラウザで異常挙動になる

wonda

総合スコア69

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/05/12 05:51

編集2021/05/12 06:46

皆様いつもお世話になっております。

input type="text"フィールドへconvertNumberToLocaleStringクラスを振って、
下記スクリプトで当該クラス要素を、lodashライブラリのmap関数でループさせて、カンマ処理inputイベントハンドラを設定&即時ディスパッチさせており、
PC上のCHROMEやsafariからのアクセスでは正常に機能しているのですが、表題の通りiOSのCHROMEやsafari等では異常挙動となってしまいます。
例:11と入力すると111になる。さらに1を入力すると、111,111になる等

HTMLは他と干渉無し、jsライブラリインクルード等は無い状態で動作するjsfiddleのリンクを追記させて頂きます。
jsfiddle

iOSのCHROMEやsafari等ではinputイベントの発火タイミングが違うようにも思えるのですが、どなたか御教示頂けると幸いです。
宜しくお願い致します。

※ソースも修正しました

javascript

1var elms = document.getElementsByClassName('convertNumberToLocaleString'); 2for(var i = 0; i < elms.length; i++){ 3 elms[i].addEventListener('input', function (event) { 4 let value = event.target.value.replace(/[^0-9]/g,''); 5 event.target.value = (value === '' ? '' : Number(value).toLocaleString('ja-JP')); 6 }); 7 elms[i].dispatchEvent(new Event('input')); 8}

HTML

1<input type="text" value class="convertNumberToLocaleString" />

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/05/12 06:16

その前に、HTMLの文法周りはwebブラウザが誤解しない程度に万全なのでしょうか。組み合わせているjsライブラリの類は把握済みでしょうか。
wonda

2021/05/12 06:37

回答ありがとうございます。 HTMLは他と干渉無し、jsライブラリインクルード等は無い状態で動作するjsfiddleを追記させて頂きます。 https://jsfiddle.net/y0d81nh6/2/
yuki84web

2021/05/12 11:40

input でないと駄目ですか?例えばonchangeなど
wonda

2021/05/12 12:53

回答ありがとうございます。 inputイベントにこだわる理由は、文字の追記・削除毎にリアルタイムでカンマ処理されるためです。 ただ、changeイベントに変更してフォーカスが外れた際に処理が走るようにした場合は正常に変換されるので、落とし所としてはこれで良いのかなと思っています。
yuki84web

2021/05/13 11:56

なるほど、ではonKeyUpでいかがでしょうか。
wonda

2021/05/14 08:26

keyupイベントに変更して試してみましたが、inputイベントと同様の結果になりました。 どうやらiOSの日本語キーボード上の数字キーボードがダメみたいで、下のグローブアイコンから横長の英字キーボードにして数字を入力すると、問題なく動作しました。
yuki84web

2021/05/14 11:46

求める回答と異なると思いますが、input type="tel"にして最初から数字キーボードで入力してもらうとか?
wonda

2021/05/14 14:00

ありがとうございます! まだ様々なブラウザで検証は必要ですが、期待する挙動の可能性が高いかもしれません。 元々input type="number"でも試していて、この場合は半角数字のみ入力可能な状態になり、 期待する挙動なのですが、カンマが反映されなかったので。。 ある程度のブラウザで検証して問題なさそうなら、解決済みとさせて頂きますので、今暫くお待ちください。 ありがとうございました。
yhasegawa55

2021/05/18 02:26

2byteで処理されるから? PCのChromeでもIME入れて123=>123,412,345,656と再現するようですヨ
wonda

2021/05/18 09:07

なるほどですね。 回答有難うございます。
wonda

2021/05/18 09:09

yuki84webへベストアンサーをつけさせて頂きたかったのですが、回答頂いたわけではなく、ベストアンサーを付けられないのですが、このまま自己解決処理で大丈夫でしょうか??
yuki84web

2021/05/18 11:30

問題ありません。自信を持って答えられる問題では無かったので、私の意思でここに書いたまでです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問