输入标签从不显示 non-numeric 个单词的脸

input tag never show the face of non-numeric words

在html中,我想让输入只允许数字。 我知道有一个 onkey(up|press|down) 事件,但是如果您尝试过,那么您就会知道您首先按下的一个数字会显示它的脸一秒钟,这看起来并不漂亮。 那么如何实现(标题中的问题)?----也就是说,如果你用键盘按下一个non-numeric字,那么输入标签没有任何反应。 我想捕捉一个单词产生并即将在输入标签中显示它的面孔的事件,但我没有找到关于那个事件的文档。

你不能 100%。我可以随时禁用或编辑您编写的任何 JavaScript 代码,因此您最好不要单独依赖此检查进行验证,始终验证服务器端。

至于进行客户端验证,现代浏览器内置了该功能,您可以在 <input> 上使用 type 属性并将其设置为 number,如下所示:

<form>
  <p>Try to enter a non number and submit.</p>
  <input type="number">
  <button>Submit</button>
</form>

keyup 事件仅在释放键盘键后触发,然后角色已经进入 textarea/input 元素。

另一方面,

keydown 在按键按下时立即触发,如果您随后取消该事件,字符甚至不会首先插入输入字段。

不过请务必小心处理,以免消除用户可能需要使用输入字段的其他按键操作,例如 f.e。光标键或 ins/del 等

(并且您可能希望在提交或以其他方式使用该值之前添加额外的 validation/sanitization,因为该值可能会以其他可能的方式进入输入字段,而键事件不会捕捉到,例如作为 f.e。通过上下文菜单触发粘贴。)