我在下面有一个文本框,通过以下代码创建:
$('#txtWeight').each( function() {
var $this = $(this);
var $weightText = $("<input type='text' class='txtWeightRow' maxlength='5' onkeypress='return isNumberKey(event)'/>").attr('name',$this.attr('name'))
.attr('value',$this.val())
$weight.append($weightText);
});
我想知道的是,如果文本框为空白,那么它应该如何编写,那么隐藏值应为0?
以下是在100和文本框中输入的数字之间进行计算的代码:
function calculateTotal()
{
var totalweight = totalmarks;
$("#qandatbl td.weight input").each(function (i, elm){
totalweight = totalweight - parseInt($(elm).val(), 10);
});
$("#total-weight").text(totalweight);
}
td.weight输入是文本框。
总评分= 100。
由于
答案 0 :(得分:1)
在执行减法的代码中,可以使用Number()
构造函数(类型转换)将空值视为0。像这样:
var $result = 100 - Number($('#txtWeight').val());
然后,文本框中的内容无关紧要,减法将起作用。如果文本框中的值不是数字(例如空字符串),则将其视为数字零,并且减法的结果将为100(不是NaN)。
在您的代码中,只需使用Number()
代替parseInt()
:
function calculateTotal()
{
var totalweight = totalmarks;
$("#qandatbl td.weight input").each(function (i, elm){
totalweight = totalweight - Number($(elm).val());
});
$("#total-weight").text(totalweight);
}
如果你想避免使用十进制数字,你甚至可以在数字后面做parseInt(即totalweight = totalweight - parseInt(Number($(elm).val()), 10);
)。
答案 1 :(得分:0)
在您的表单提交上,您只需检查它是否有值...
var myVal = $('#txtWeight').val();
myVal = myVal == '' ? 0 : myVal;
答案 2 :(得分:0)
方便地,将空字符串强制转换为数字的结果为0
。因此,无论您何时需要使用文本框的值,只需将其强制转换为数字(使用+
运算符):
var weight = +$("#txtWeight").val();
这将为0
提供空字符串,或为其他数字输入的任何数字。由于您要阻止按下非数字键,因此您唯一需要担心的是替代输入方法,例如复制/粘贴或拖放。
修改:查看您的calculateTotal()
功能,您真正需要做的就是摆脱对parseInt()
的呼唤。表达式中的减法运算符(-
)已隐式将值强制转换为数字。它已经搞砸了,因为parseInt
正在返回NaN
。
function calculateTotal() {
var totalweight = totalmarks;
$("#qandatbl td.weight input").each(function (i, elm) {
totalweight -= elm.value;
});
$("#total-weight").text(totalweight);
}
注意,我还将表达式从x = x - n
缩短为x -= n
,并跳过创建jQuery对象只是为了读取value
属性。