3から3の数字を分けましたか?

javascript jquery
3から3の数字を分けましたか?

input:textに数字を入力し、3〜3の数字を入力し、それらの間に「:」と入力するとどうなりますか。 + 通常の数値フォーマット

例:入力にこの番号を入力: 45656839 +同じ入力での結果(ライブ-オンライン):` 45,656,839` + * iはプラグインの使用を望まない*

敬意を表して

  1  0


ベストアンサー

http://jsfiddle.net/X8Ucf/ [デモ]

これはあなたのためにそれをするべきです。

+
$("input:text.numeric").keyup(function(){
    $val = $(this).val();
    $(this).val($val.match(/[0-9]{1,3}/g).join(","))
});

EDIT

通常の数値フォーマットの場合、コードは少し異なります。 これにはおそらくいくつかの良い正規表現がありますが、最初に考えたのは、文字列を逆にして同じテクニックを適用することでした。 その後、再び文字列を逆にして、あなたはそれを持っています

$("input:text.numeric").keyup(function(){
    $val = $(this).val().match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
    $(this).val($val)
});

編集2

http://jsfiddle.net/X8Ucf/1/ [デモ]

将来の参考のために、誰かがこれを小数点以下の桁で実装したい場合(ええ、私は夢中になりました:P)…​

$("input:text.numeric").keyup(function(e){
    if(e.which > 40 || e.which == 8) {
        var num = $(this).val().match(/[0-9,]*/g)[0];
        var decimalNum = $(this).val().match(/[.][0-9]*/) || "";
        if(num) {
            var wholeNum = num.match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
            var resultNum = wholeNum + decimalNum;
            $(this).val(resultNum);
        }
        else
        {
            $(this).val(num);
        }
    }
});

3


マスクされた入力プラグインが良い解決策になると思います。 詳細はこちらをご覧ください:http://digitalbush.com/projects/masked-input-plugin/

2


function thousandSeparator(n,sep) {
    var sRegExp = new RegExp('(-?[0-9]+)([0-9]{3})'),
    sValue=n+'';

    if (sep === undefined) {sep=',';}
    while(sRegExp.test(sValue)) {
        sValue = sValue.replace(sRegExp, '$1'+sep+'$2');
    }
    return sValue;
}

From:http://webdesign.onyou.ch/2010/08/04/javascript-inserting-thousand-separators/

1


次のようなことをしてください(テストされていない、動作するはずです):

$(':text').blur(function(){
  var $this = $(this), val = $this.val(), newVal = ''
  for (var i = 0; i < val.length; i++) {
    newVal += val.charAt(i)
    if (!((i + 1) % 3))
      newVal += ','
  }
  $this.val(newVal.slice(0,-1))
})

編集:上記のジョセフの答えを参照してください。 彼は短いです。

0


タイトルとURLをコピーしました