Как добавить массив чисел с тысячами разделителей в jquery?

#jquery

#jquery

Вопрос:

Хорошо, у меня есть эта таблица, в которой последний столбец представляет собой столбец только с числом и отформатирован с тысячами разделителей и десятичной дробью. Вот пример кода:

 <html>
<head>
<script src="jquery.js"></script>
<script src="includes/autoNumeric.js"></script>
<script type="text/javascript">
$(document).ready(function() {
jQuery(function($) {
    $('input.auto').autoNumeric();
});
$("#table").keyup(function(){
    var sal_total = 0;
    $(".salary[value!='']").each(function() {
        sal_total  = Number($(this).val());
    });
    $('#total').val(sal_total);
});
$("#addRow").click(function() {
    var newRow = "<tr><td><input type="text"></td><td><input type="text"></td><td><input type="text" class="auto salary"></td></tr>";
$("#table tr.totalRow:last").before(newRow);
});
});
</script>
</head>            
<body>
<table id="table" border="1">
<tr>
    <td>ID</td>
    <td>Name</td>
    <td>Salary</td>
</tr>
<tr>
    <td><input type="text" ></td>
    <td><input type="text" ></td>
    <td><input type="text" class="auto salary"></td>
</tr>
<tr>
    <td><input type="text" ></td>
    <td><input type="text" ></td>
    <td><input type="text" class="auto salary"></td>
</tr>
<tr>
    <td><input type="text" ></td>
    <td><input type="text" ></td>
    <td><input type="text" class="auto salary"></td>
</tr>
<tr>
    <td colspan="2">Total</td>
    <td><input type="text" id="total" readonly="readonly" /></td>
</tr>
</table>
<div align="center">
    <input type="button" id="addRow" value="Add Row" />
    <input type="submit" name="save" value="Save" />
</div>
</body>
</html>
  

Столбец заработной платы автоматически форматируется с помощью плагина autoNumeric, чтобы вставлять запятую через каждую тысячу и ставить десятичную точку, я хотел бы добавлять эти значения заработной платы при каждом нажатии клавиши и вводить сумму во ввод #total . Это работает, когда я удаляю запятые, но выдает NaN, когда есть, плюс всякий раз, когда я добавляю строку, autoNumeric не работает для этой конкретной строки. Пожалуйста, помогите, я просто новичок в этом.

Ответ №1:

Чтобы преобразовать в фактические числа (а не в строки), вы должны убрать запятые.

Измените это:

 sal_total  = Number($(this).val());
  

к этому:

 sal_total  = Number($(this).val().replace(/$|,/g, ""));
  

Это удалит запятые и знаки доллара, прежде чем пытаться преобразовать его в число.

Если вы хотите, чтобы запятые вставлялись обратно, когда вы помещаете итоговое значение обратно на страницу, вам придется снова вставить запятые после того, как вы получили итоговое значение.

Комментарии:

1. @DigitalPlane — да, я внес оба предложенных исправления. Спасибо.