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

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

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

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

1900閲覧

正規表現で正の整数でカンマを設定する

Masaru0217

総合スコア10

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/05/29 00:48

フォーカスするとカンマが正の整数のみに動作し、フォーカスアウトするとカンマが消える機能を作っております。
以下のサイトの正規表現を使って試してみましたが機能しません。
https://frontenddaily.work/jquery_isnumber/546
アドバイス頂けたら幸いです

<html lang="ja"> <head> <meta charset="UTF-8"> <title>カンマをつける</title> </head> <body> <input type="text" id="textBox" value="123456789" /> <script src="http://code.jquery.com/jquery-2.2.3.min.js"></script> <script> $(function() { // フォーカス $('#income').on('focus', function(){ var num = $(this).val(); num = num.replace(/^([1-9]\d*|0)$/''); $(this).val(num); }); // フォーカスアウト $('#income').on('blur', function(){ var num = $(this).val(); num = num.replace(/,/g, ''); $(this).val(num); }); }); </script> </body> </html> コード

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

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

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

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

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

jun68ykt

2020/05/29 01:01

正規表現を使うことは、ご質問の必須要件なのでしょうか?または、必ずしも正規表現を使わなくもよいのでしょうか?
Masaru0217

2020/05/29 01:09

コンタクトフォームの年収の欄を見やすくするために、カンマを付けたり、消したりしたいので、必須条件ではないです。よろしくお願いいたします。
guest

回答3

0

本題ではありませんが、そういう「表示文字列を加工する」ような入力は、うまく作らないと使い勝手が悪くなります

たとえば、(縦棒はカーソルです)

  • 123,456|となっているときに7を入力すれば123,4567|ではなく1,234,567|になってほしい
  • 123,|456でバックスペースを押せば12|,456となってほしい

など、キーの操作1つに応じて中身の文字列とカーソル位置の両方を正しく制御しないと、入力する側のストレスになるかと思います。

投稿2020/05/29 00:56

maisumakun

総合スコア146018

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

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

Masaru0217

2020/05/29 01:51

なるほど。今回は自分の練習の為に作ったものなのでよかったですが、実際に誰かに見てもらう、使ってもらうときは、その機能が必要かどうかを考え付け足したいと思います。
guest

0

こんにちは

数値を3桁ずつのカンマ区切りにするには、toLocaleString が便利です。以下はこれを使った例です。

javascript

1 // フォーカス 2 $('#income').on('focus', function(){ 3 var num = +$(this).val(); 4 if (num > 0) { 5 $(this).val(num.toLocaleString()); 6 } 7 }); 8 9 // フォーカスアウト 10 $('#income').on('blur', function(){ 11 var num = $(this).val(); 12 num = +num.replace(/[^0-9]/g, ''); 13 $(this).val(num); 14 });

なお、maisumakunさんのご回答にあるように、より使いやすくするにはさらに細かいところで改善が必要と思われます。参考になれば幸いです。

投稿2020/05/29 01:40

jun68ykt

総合スコア9058

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

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

Masaru0217

2020/05/29 01:56

アドバイスありがとうございます。 toLocaleString自分でも調べて使えるようにしていきます
guest

0

ベストアンサー

focusとblurのヤリタイことが逆に見えます
またidの指定もおかしいです

投稿2020/05/29 01:15

yambejp

総合スコア116724

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

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

yambejp

2020/05/29 01:16 編集

<script> $(function() { $('#income').on('blur focus', function(e){ var num = $(this).val(); if(e.type=="focus"){ num = num.replace(/,/g, ''); }else if(/^([1-9]+\d*|0)$/.test(num)){ num = parseInt(num).toLocaleString(); } $(this).val(num); }).trigger('blur'); }); </script> <input type="text" id="income" value="123456789" />
Masaru0217

2020/05/29 01:53

ご指摘ありがとうございます。 カンマの機能に関しても上手くいきました コードに関してはよく見直して、自分でも書けるようになりたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問