前端开发中经常会遇到 input 取值区间的需求,比如搜索的时候,价格区间,积分值区间

大致的需求为 input 的值必须是正整数,第二个 input 的值必须大于第一个

dom结构如下:

<div id="box">
    <label >所需积分:</label>
    <div class="input_box">
        <input id="input1" type="text" oninput="inputChange(this)" onchange="compare()" />
        <span class='m05'>-</span>
        <input id="input2" type="text" oninput="inputChange(this)" onchange="compare()" />
    </div>
</div>

js代码如下:

function inputChange(ele){
    ele.value = ele.value.replace(/\D+/,'').replace(/^0*/g,'');
};
function compare(){
    // 获取输入框的值
    var input1 = document.getElementById('input1');
    var input2 = document.getElementById('input2');
    // 输入框的值转为Number类型
    var num1 = parseInt(input1.value);
    var num2 = parseInt(input2.value);
    // 如果第二个值小于第一个则互换
    if(num2!=0 && num1>num2){
        var temporaryValue = num1;
        num1 = num2;
        num2 = temporaryValue;
        input1.value = num1;
        input2.value = num2;
    };
};

整个方法主要为两部分:

1. 利用 oninput 方法在输入的时候控制输入内容必须是数字,且第一个数字不能为0

2. 利用 onchange 方法在 input 输入完成后比较两个 input 的值,如果第一个大于第二个,则互换

如有表述不准确之处,欢迎指正,欢迎补充,感谢阅读。