input只能输入两位整数

input中的值,只能为两位整数,现已增加属性maxlength,js该如何做校验?

阅读 7.7k
6 个回答

如果只要求在提交时警告直接用pattern属性就好

<input type="text" pattern="\d{2}"/>

如果你希望输入的时候就阻止输入其他字符, 就在change事件里操作

let prevVal = ""
inputEl.addEventListener("change", () => {
  if (!/^\d{0,2}$/.test(inputEl.value)) {
    inputEl.value = prevVal
  } else {
    prevVal = inputEl.value
  }
})
<input type="number" maxlength=2 id="aa">
$("#aa").on("input propertychange",function(){
                
                if($(this).val().length>2){
                    $(this).val($(this).val().substr(0,2));
                }
})
$('input').on('change',function(){
    if(!/^\d\d$/.test($(this).val())){//如果为0-2位整数,那么/^\d{0-2}$/
        $(this).val('')
    }
})

像这种情况,使用正则表达式是比较好的方法,试试:/^d{0-2}$/

新手上路,请多包涵

/^[1-9]?d$/.test

可以从输入端控制

document.querySelector('input').addEventListener('input', (e) => {
    let val = e.target.value.replace(/[^\d]/g, '');

    // 使用 maxLength 就可以不用 slice 截取
    e.target.value = val.slice(0, 2);
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题