仅允许表单字段中的数字或小数点

Sir*_*don 3 javascript forms

我已经将输入字段限制为仅通过js的数字,但我不确定如何也允许小数...

function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

         return true;
      }
Run Code Online (Sandbox Code Playgroud)

先感谢您!

回答:

function isNumberKey(evt)
 {
 var charCode = (evt.which) ? evt.which : event.keyCode
 if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46)
    return false;

 return true;
 }
Run Code Online (Sandbox Code Playgroud)

添加charCode 46完美地工作(按键值).190和110什么也没做.

谢谢你的帮助!

Pau*_* S. 8

代码取决于您正在收听的事件,通过在此处使用带有测试输入的JavaScript事件KeyCode测试页面,您可以轻松找到所需内容,例如,您可以获得完整停止(右移的左侧).

               onKeyDown    onKeyPress    onKeyUp
event.keyCode        190            46        190
event.charCode         0            46          0
event.which          190            46        190
Run Code Online (Sandbox Code Playgroud)

而对于.数字键盘它是

               onKeyDown    onKeyPress    onKeyUp
event.keyCode        110            46        110
event.charCode         0            46          0
event.which          110            46        110
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,使用charCode检查onKeyPress是最统一的,这是它的unicode号码; .String.fromCharCode(46); // "."

有一个在名单中MDN页面进行的KeyboardEvent在那里还指出

注意:Web开发人员不应在keydown和keyup事件处理程序中使用可打印键的keycode属性.如上所述,键码不可用于检查将被输入的字符,特别是当按下Shift键或AltGr键时.当Web开发人员实现快捷键处理程序时,keypress事件至少是Gecko上用于此目的的更好事件.有关详细信息,请参阅Gecko Keypress事件.

您可以在我链接到的测试页面中观察使用AltCrShift on keyCode与选择键的奇怪效果.