总和达到100后,禁用其余数字框

时间:2016-05-12 12:44:56

标签: javascript jquery

我正在设置一个设置,我在表中有多行要求输入数字。我想在总和达到100时立即禁用其余的文本框。

我的状态警报工作正常,但无法选择空文本框以禁用它们。此外,仅当我在第一个输入框中输入100时,警报才有效。对于剩余的盒子,即使警报也不起作用。

请帮忙,下面是我的代码 -

int search_max(link h, int currmax){
    int max;
    if (h == NULL)
        return currmax;
    else if (h->item->acc > currmax){
        currmax = h->item->acc;

    max = search_max(h->l,currmax);
    if (max > currmax)
       currmax = max;

    max = search_max(h->r, currmax);
    if (max > currmax)
       currmax = max;

    return currmax;
}

3 个答案:

答案 0 :(得分:0)

问题在于这行代码。

sum += parseInt($(this).find("input:text:last").val());

当您parseInt清空文本框时,它将返回 NaN ..因此,如果是Nan,您必须注意返回0。将上面的行更改为

sum += parseInt($(this).find("input:text:last").val()) || 0;

此外,您必须使用此代码

过滤掉所有空的inputs
$('input:text').filter(function() { return $(this).val() == ""; })

然后禁用它..

这是 Working Fiddle

答案 1 :(得分:0)

尝试使用此代码我认为此代码将满足您的要求:)

get

答案 2 :(得分:0)

您的总和不起作用,因为当您尝试对空值求和时,它会生成NaN结果。此外,您可以在完成总和计算后比较结果。

function checkTotal() {
var sum=0;
$("#fieldset_Q14 table tbody tr").each(function() {
    var num = parseInt($(this).find("input:text:last").val()) || 0;
    sum += parseInt(num);
});
if (sum==100) {
  $('input:text').filter(function() { return this.value == ""; }).prop('disabled',true);
}
else {
  $('input:text').filter(function() { return this.value == ""; }).prop('disabled',false);
}

}

有关工作示例,请参阅https://jsfiddle.net/p556xprt/