Проблема в том, что вы вызываете метод .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()
будет передавать старое (текущее) значение каждого элемента в функцию, которую вы предоставляете, устанавливая новое значение для возврата из этой функции.