Javascript 突出显示的输入文本不会在按键时更新

Javascript 突出显示的输入文本不会在按键时更新,javascript,html,input,highlight,Javascript,Html,Input,Highlight,当用户在标记中突出显示其全部输入,然后按数字键更新所选输入时,如果达到最大输入大小,则输入不会更新(仅当用户突出显示整个输入值时才会发生)。对于我下面的代码,输入类型是一个范围为0-999的数字,最大输入大小等于3。这个问题的原因可能是什么 input.js: table.rows[2].cells[1].innerHTML = "<input type=number id=input name=number min=0 max=999 value=>"; document.get

当用户在标记中突出显示其全部输入,然后按数字键更新所选输入时,如果达到最大输入大小,则输入不会更新(仅当用户突出显示整个输入值时才会发生)。对于我下面的代码,输入类型是一个范围为0-999的数字,最大输入大小等于3。这个问题的原因可能是什么

input.js:

table.rows[2].cells[1].innerHTML = "<input type=number id=input name=number min=0 max=999 value=>";

document.getElementById("input").addEventListener("input", processInput);

document.getElementById("input").onkeypress = function() {
   if (this.value.length == 3) {
      return false;
   } 
   if (event.charCode == 46 || event.charCode == 45) {
      event.preventDefault();
   }
};
table.rows[2]。单元格[1]。innerHTML=“”;
document.getElementById(“输入”).addEventListener(“输入”,processInput);
document.getElementById(“输入”).onkeypress=function(){
if(this.value.length==3){
返回false;
} 
if(event.charCode==46 | | event.charCode==45){
event.preventDefault();
}
};

看起来您的问题是该
onkeypress
处理程序中的第一个
if
语句——如果您有3个字符,则不会发生任何处理。遗憾的是,在数字输入上设置最大值并不能阻止用户输入更大的数字(至少在Firefox上不是这样),设置maxlength属性似乎也不能起到作用。然而,我已经组合了一些javascript,它们提供了一个近乎自然的响应:

  • 输入额外字符:它们会快速显示,但随后会被删除
  • 减小到小于零:应夹紧到零
  • 后间距应允许清空字段
下面是:


var输入=document.querySelector(“输入”);
var min=parseInt(input.min);
var max=parseInt(input.max);
input.onkeypress=功能(ev){
//我认为OP有充分的理由忽略它
//-和。
如果(ev.charCode==46 | | ev.charCode==45){
ev.preventDefault();
返回;
}
};
input.onkeyup=功能(ev){
var current=parseInt(输入值);
如果(当前==“”){
返回;
}
input.value=钳位(电流);
}
功能钳位(值){
如果(isNaN(值)){
返回“”;
}
如果(值>=最小值和最大值){
var str=value.toString();
返回str.substr(0,(最大+“”).length);
}
返回最小值;
}
当然,这个脚本只能在输入之后找到,因为它假设输入存在。您可能还需要修改它以适应多个输入的需要,因为我已经在全局变量中存储了输入之类的变量及其最小/最大值