如何使空白文本框等于0

时间:2012-02-01 01:15:07

标签: jquery html

我在下面有一个文本框,通过以下代码创建:

$('#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。

由于

3 个答案:

答案 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属性。