Форматировать и неформатировать числа в jquery - PullRequest
0 голосов
/ 03 февраля 2012

Я форматирую числа, используя плагин jqnumformatter.Все хорошо с этим, но у меня проблемы с удалением запятых.Я использовал .each (), чтобы перебрать все входы, на которых запятые.Но в этом случае мне нужно дважды щелкнуть следующую кнопку, чтобы убрать все запятые на числах.

<script>
$(function(){

    $("#next").click(function(){//unformats the numbers

        $("input[data-toformat=format]").each(function(){
            var formatted = $(this).val();
            var unformatted = formatted.replace(",", "");
            $(this).val(unformatted);
        });

    });


});
</script>

<input type="text" id="num" data-toformat="format"  autofocus/>
<input type="text" id="num2" data-toformat="format" />
<input type="button" id="next" value="next">
<input type="button" id="back" value="back">

У вас есть лучший способ сделать это?числа все сразу, если у меня есть 2 или более запятых на каждом из чисел.

1 Ответ

4 голосов
/ 03 февраля 2012

Проблема в том, что вы вызываете метод .replace() :

var unformatted = formatted.replace(",", ""); 

Если вы передаете строку в качестве первого параметра, она заменяет только первое вхождение.Если вы передаете регулярное выражение, вы можете установить флаг «global» для регулярных выражений, чтобы заменить все вхождения:

var unformatted = formatted.replace(/,/g, "");

Обратите внимание, что ваш код может быть немного упрощен, потому что вам не нужны локальные переменные:

$(this).val( $(this).val().replace(/,/g, "") );

Но это можно упростить еще больше, потому что если вы передадите функцию методу .val() , вам даже не понадобится цикл .each():

$(function(){
   $("#next").click(function(){
       //unformats the numbers
       $("input[data-toformat=format]").val(function(i, oldVal){
           return oldVal.replace(/,/g, "");
       });
   });
});

Этот синтаксис для .val() будет передавать старое (текущее) значение каждого элемента в функцию, которую вы предоставляете, устанавливая новое значение для возврата из этой функции.

...