#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 — да, я внес оба предложенных исправления. Спасибо.