在更改之前获取旧的输入值并将总值更改为+或 -

时间:2017-09-30 08:25:05

标签: javascript jquery html statistics

我想制作积分形式。 我有4个输入类型数值0-100和总数= 100点。所以我们可以在每个输入中加25个点。我已经完成了验证输入数量min 0 max 100的工作,并从总更改的输入值中减去。 添加Total时遇到问题。如果用户更改了已经更改的值,我需要使Total +值(更改前)和Total - value(更改后)。 我不知道如何在变革前获得价值。

我的HTML

<input type="number" min="0" max="100" name="1" />
<input type="number" min="0" max="100" name="2" />
<input type="number" min="0" max="100" name="3" />
<input type="number" min="0" max="100" name="4" />
<input type="text" id="Total" name="Total" value="100"/>

我的剧本

$("input[type=number]").keyup(function(event) {
    max=100;
  min=0;
    value=( parseInt($(this).val()));
    if(value < min || isNaN(parseInt(value))) 
        $(this).val(0)
    else if(value > max) 
        $(this).val(100);
    else return value;
});

var total, myVal;
$("input[type=number]").change(function(event) {
    maxPoints = parseInt($('#Total').val());
    myVal = ( parseInt($(this).val()) || 0);
    total = maxPoints - myVal;
    $('#Total').val(total);
});

如果我能够将旧值保存到某些var,我会将.onchange脚本更改为类似的东西,我认为它应该可行。但我怎么能得到旧的价值?

$("input[type=number]").change(function(event) {    
    oldValue = ???? - how to get this ? :P
    if(oldValue>0){
        maxPoints = parseInt($('#Total').val()) + oldValue;
    }else{
        maxPoints = parseInt($('#Total').val());
    }    
    myVal = ( parseInt($(this).val()) || 0);
    total = maxPoints - myVal;
    $('#Total').val(total);
});

现在有js小提琴如何运作。 Fiddle here

1 个答案:

答案 0 :(得分:2)

嗨,只需像这样保存旧值

&#13;
&#13;
$("input[type=number]").change(function(event) {    
    oldValue = $(this).data('oldvalue');
    if(oldValue>0){
        maxPoints = parseInt($('#Total').val()) + oldValue;
    }else{
        maxPoints = parseInt($('#Total').val());
    }    
    myVal = ( parseInt($(this).val()) || 0);
    total = maxPoints - myVal;
    $(this).data('oldvalue',$(this).val()) // update old value to new value
    $('#Total').val(total);
});
&#13;
<input type="number" min="0" data-oldvalue='0' max="100" name="1" />
<input type="number" min="0" data-oldvalue='0' max="100" name="2" />
<input type="number" min="0" data-oldvalue='0' max="100" name="3" />
<input type="number" min="0" data-oldvalue='0' max="100" name="4" />
<input type="text" id="Total" name="Total" value="100"/>
&#13;
&#13;
&#13;