首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我将三个输入数字的最大值相加,它是有效的,但是如何在不丢失最大值的情况下添加递增递减按钮?

我将三个输入数字的最大值相加,它是有效的,但是如何在不丢失最大值的情况下添加递增递减按钮?
EN

Stack Overflow用户
提问于 2021-03-17 13:40:09
回答 1查看 191关注 0票数 3

我需要添加的三个元素是8,与点击+和-按钮。但是,我不希望它会将每个元素增加到8。

代码语言:javascript
复制
// Addtion of select items LINK - https://stackoverflow.com/questions/49644837/set-max-value-of-three-input-numbers-together
var max = 8;
var $inputs = $('input');

function sumInputs($inputs) {
    var sum = 0;

    $inputs.each(function() {
        sum += parseInt($(this).val(), 0);
    });

    return sum;
}

$inputs.on('input', function(e) {
    var $this = $(this);
    var sum = sumInputs($inputs.not(function(i, el) {
        return el === e.target;
    }));
    var value = parseInt($this.val(), 10) || 0;
    if (sum + value > max) $this.val(max - sum);
});


//Increment Decrement value

function up(max) {
    document.getElementById("myNumber").value = parseInt(document.getElementById("myNumber").value) + 1;

    if (document.getElementById("myNumber").value >= parseInt(max)) {
        document.getElementById("myNumber").value = max;

    }
}

function down(min) {
    document.getElementById("myNumber").value = parseInt(document.getElementById("myNumber").value) - 1;
    if (document.getElementById("myNumber").value <= parseInt(min)) {
        document.getElementById("myNumber").value = min;
    }
}


function up2(max) {
    document.getElementById("myNumber2").value = parseInt(document.getElementById("myNumber2").value) + 1;
    if (document.getElementById("myNumber2").value >= parseInt(max)) {
        document.getElementById("myNumber2").value = max;
    }
}

function down2(min) {
    document.getElementById("myNumber2").value = parseInt(document.getElementById("myNumber2").value) - 1;
    if (document.getElementById("myNumber2").value <= parseInt(min)) {
        document.getElementById("myNumber2").value = min;
    }
}


function up3(max) {
    document.getElementById("myNumber3").value = parseInt(document.getElementById("myNumber3").value) + 1;
    if (document.getElementById("myNumber3").value >= parseInt(max)) {
        document.getElementById("myNumber3").value = max;
    }
}

function down3(min) {
    document.getElementById("myNumber3").value = parseInt(document.getElementById("myNumber3").value) - 1;
    if (document.getElementById("myNumber3").value <= parseInt(min)) {
        document.getElementById("myNumber3").value = min;
    }
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div class="select-1">
    <button type="submit" value="-" onclick=" down('0')" class="sub" id="">-</button>
    <input type="number" id="myNumber" value="0" name="qty" max="8" min="0" step="1"/>
    <button type="submit" value="+" onclick="up('8')" class="add">+</button>
</div>
<div class="select-2">
    <button type="submit" value="-" onclick=" down2('0')" class="sub">-</button>
    <input type="number" id="myNumber2" value="0" name="qty2" max="8" min="0" step="1"/>
    <button type="submit" value="+" onclick="up2('8')" class="add">+</button>
</div>
<div class="select-3">
    <button type="submit" value="-" onclick=" down3('0')" class="sub" id="">-</button>
    <input type="number" id="myNumber3" value="0" name="qty3" max="8" min="0" step="1"/>
    <button type="submit" value="+" onclick="up3('8')" class="add">+</button>
</div>

目前,最大值是8。我也想用+和-按钮获得最大值。

我如何用javascript或jquery解决这个问题?

在这里,有一个我关注的增量和减量的链接。https://stackoverflow.com/a/49645518/15412266

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-17 15:43:22

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div>
        

        <button type="submit" value="+" onclick="minusoperation(1)" class="minus">-</button>
        <input type="number" class="numbers" id="number1" min="0" max="8" onchange="inputNumber(this)" data-prevvalue=0 />
        <button type="submit" value="+" onclick="plusoperation(1)" class="plus">+</button>

        <button type="submit" value="+" onclick="minusoperation(2)" class="minus">-</button>
        <input type="number" class="numbers" id="number2" min="0" max="8" onchange="inputNumber(this)" data-prevvalue=0 />
        <button type="submit" value="+" onclick="plusoperation(2)" class="plus">+</button>


        <button type="submit" value="+" onclick="minusoperation(3)" class="minus">-</button>
        <input type="number" class="numbers" id="number3" min="0" max="8" onchange="inputNumber(this)" data-prevvalue=0 />
        <button type="submit" value="+" onclick="plusoperation(3)" class="plus">+</button>


    </div>

    <script type="text/javascript">
        function inputNumber(el)
        {
            
            var myElements = document.getElementsByClassName('numbers');
            var sum = 0;
            for (var i=0;i<myElements.length;i++) {
                if(myElements[i].value)
                    sum = sum+parseInt(myElements[i].value);
            }
            if(sum<=8)
            {
                el.dataset.prevvalue  = el.value;
            } else {
                el.value  = el.dataset.prevvalue;
            }

        }

        function minusoperation(inputNumber)
        {

            var el = document.getElementById('number'+inputNumber);
            if(parseInt(el.value))
            {
                el.value = parseInt(el.value)-1;

            } else {
                el.value = 0;
            }
            el.onchange();
        }

        function plusoperation(inputNumber)
        {
            var el = document.getElementById('number'+inputNumber);

            if(parseInt(el.value))
            {
                el.value = parseInt(el.value)+1;
            } else {
                el.value = 1;
            }
            el.onchange();

        }

    </script>
</body>
</html>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66667551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档