作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 jQuery
和 ASP.NET MVC 3
以及 razor View 引擎
。
我有几个可以在其中输入数值的文本框。我有一个标签控件,其中包含由 jQuery 计算的文本框总数。
我有以下文本框和标签(用于计算结果):
<input id="GrossMonthlySalary" type="text" />
<input id="SpouseGrossMonthlySalary" type="text" />
<input id="AdditionalIncome" type="text" />
<input id="ChildSupportIncome" type="text" />
<label id="TotalMonthlyIncome" class="total-amount"></label>
在我的 .js 文件中,我有以下内容:
$(function () {
$('#GrossMonthlySalary, #SpouseGrossMonthlySalary, #AdditionalIncome, #ChildSupportIncome').keyup(function () {
var val1 = $('#GrossMonthlySalary').val();
var val2 = $('#SpouseGrossMonthlySalary').val();
var val3 = $('#AdditionalIncome').val();
var val4 = $('#ChildSupportIncome').val();
var totalMonthlyIncome =
(parseInt(val1, 10) || 0) +
(parseInt(val2, 10) || 0) +
(parseInt(val3, 10) || 0) +
(parseInt(val4, 10) || 0);
if (totalMonthlyIncome == 0) {
$('#TotalMonthlyIncome').text('');
}
else {
$('#TotalMonthlyIncome').text(totalMonthlyIncome);
}
});
});
如果我单击“提交”按钮并且出现错误,则会显示错误,并清除带有计算结果的“我的标签”控件。回发后如何保留值?
关于我计算结果的方式还有一个问题,这个方法好吗还是有更好的方法?
最佳答案
请记住,parseInt 在遇到非数字字符时就会失败:
parseInt('$10') // NaN
就计算总数而言,由于您没有对特定值进行任何额外的处理,因此您可以使用类选择器来简化整个过程。
$('.incomes').keyup(function () {
var incomes = $('.incomes'),
totalDisplay = $('#TotalMonthlyIncome'),
totalVal = 0;
incomes.each(function() {
var matches = null;
// find the number to add to total
matches = $(this).val().match(/\d+/);
// not bothering with the regex on totalVal because we set it
totalVal = ( matches !== null ? parseInt(matches[0],10) : 0 ) + parseInt(totalVal,10);
});
totalVal = totalVal === 0 ? '' : totalVal;
totalDisplay.text(totalVal);
});
关于javascript - 回发后保留计算的 jQuery 总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7333564/
我是一名优秀的程序员,十分优秀!