为了账号安全,请及时绑定邮箱和手机立即绑定

如果不内联调用,则仅输入数字的 Vanilla javascript 函数将不起作用

如果不内联调用,则仅输入数字的 Vanilla javascript 函数将不起作用

慕斯709654 2021-11-18 16:20:17
我发现此功能旨在阻止输入非数字字符:function isNumber(evt) {    evt = (evt) ? evt : window.event;    var charCode = (evt.which) ? evt.which : evt.keyCode;    if (charCode > 31 && (charCode < 48 || charCode > 57)) {        return false;    }    return true;}如果我这样称呼它: <input class="onlynumbers" type="text" onkeypress="return isNumber(this);" >它有效。如果我写这样的东西:var clickMe = document.querySelectorAll('.onlynumbers');for (var i = 0; i < clickMe.length; i++) {    clickMe[i].addEventListener('keypress', function (event) {        isNumber(event);    }, false);}它不是。我仍然可以输入字母。我无法弄清楚原因。你能帮我解决这个问题吗?提示:我不能使用 JQUERY。
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

正如@VLAZ 建议的那样,使用type="number"是更好的解决方案。


但是,要修复您的代码 - 如果字符不是数字,则用于event.preventDefault()阻止字母插入:


function isNumber(evt) {

  evt = (evt) ? evt : window.event;

  var charCode = (evt.which) ? evt.which : evt.keyCode;

  if (charCode > 31 && (charCode < 48 || charCode > 57)) {

    return false;

  }

  return true;

}


var clickMe = document.querySelectorAll('.onlynumbers');


for (var i = 0; i < clickMe.length; i++) {

  clickMe[i].addEventListener('keypress', function(event) {

    if(!isNumber(event)) event.preventDefault();

  }, false);

}

<input class="onlynumbers" type="text">


查看完整回答
反对 回复 2021-11-18
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信