javascript - 可靠的 html5 输入类型处理

标签 javascript regex html input

我知道 html5 输入标记有一个 pattern 属性,但这有助于在用户输入值后验证字段。

这里的请求是为了防止用户输入错误的内容,而不是事后纠正。我没有兴趣讨论它是否更好 - 这只是一个请求。

我还知道我可以为 keyPress 事件添加一个事件监听器并决定接受哪些字符。

但是我看到的所有示例都不是跨浏览器兼容的(我至少对 FF、Chrome 感兴趣,无论是桌面版还是移动版)并且它们都失败了,因为用户可以输入“----”或“....”。

什么是可靠、健壮、跨浏览器的正则表达式模式来允许用户输入:

  • 任意数字 [0..9]
  • 只有一个小数点(“.”或“,”转换为第一个小数点)
  • 指定的小数位数(即小数点后的数字)
  • 可选仅一个符号(“+”或“-”)作为第一个字符
  • 常用文本命令:箭头键、复制/剪切/粘贴、退格键、删除、输入

最好不使用 jQuery - 因为我应该仅为此目标添加它。

最佳答案

“此处的请求是为了阻止用户”——不要这样做。

如果我正在输入我的名字,但在输入 i 时我的手指打滑,并且我也按下了 8 键...没什么大不了的,我只是按下了退格键,对吗?

嗯,你的想法是错误的。您的姓名输入不允许使用数字,因此不会出现意外的 8,退格键会删除 i

在您的问题中,您似乎正在寻求数字输入(您是否考虑过 <input type="number" /> ?),因此在尝试输入 9 时,手指滑动可能适用于 *。无论您输入什么,相同的想法都适用。

始终允许用户输入他们想要的任何内容。当他们完成输入(元素的 onchange 或表单的 onsubmit)时,然后你告诉他们“嘿,你输入的这个东西不看来是对的。”

因此,支持 input[pattern] 的浏览器提供的行为正确不应更改。

关于javascript - 可靠的 html5 输入类型处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40975695/

相关文章:

javascript - 多人同时使用 AJAX/PHP 协同编辑文件?

javascript - 使用 Leaflet 中的弹出窗口将整数更改为字符串值

javascript - ajax php 中单选按钮 undefined index 值

html - 使 css 背景图像 (svg) 响应式

php - AJAX未运行成功函数

html - 如何将 Bootstrap div 彼此对齐,如果有额外的空间在那里扩展

javascript - 强制 mod_write 不重写任何以 .css 或 .js 结尾的内容

java - 从剪贴板匹配反斜杠 (\) 时出错

java - 用于提取(仅)第一个数值的正则表达式

regex - sed中的“-n”实际上是什么意思?