【问题标题】:no ability to enter numbers or special chars in input无法在输入中输入数字或特殊字符
【发布时间】:2020-03-27 19:25:36
【问题描述】:

以下内容大部分都有效;然而,数字仍然可以通过两种方式输入:“复制粘贴”以及浏览器缓存/建议,即如果您的浏览器从您的历史记录中向您提供建议以填充输入。数字仍然可以通过这两种方式来实现。

无论如何要完全消除在字段中输入数字的能力?

<input type="text" data-value-field="value" name="styleName" onkeypress="return /[a-z]/i.test(event.key)" />

【问题讨论】:

  • 您是否考虑过关闭自动完成功能? developer.mozilla.org/en-US/docs/Web/HTML/Attributes/…
  • 另外,您仍然可以通过进入开发人员工具并更改&lt;input&gt; 上的value 属性来修改输入的值。一个可能的解决方案是使用setInterval() 定期检查和清理输入。

标签: javascript html regex validation


【解决方案1】:

检查一下

abc.oninput = function() {
  const val = this
  if (/[0-9~`!@#$%\^&*()+=\-\[\]\\';,/{}|\\":<>\?£.]+/.test(this.value)) {
const i = this.value.match(/[0-9~`!@#$%\^&*()+=\-\[\]\\';,/{}|\\":<>\?£.]+/g)
if (i !== null) {
  i.map(function(el) {
    val.value = val.value.replace(el, '')
  })
}
  }
}
&lt;input type="text" data-value-field="value" name="styleName" id="abc" /&gt;

【讨论】:

    【解决方案2】:

    onpaste="return false"用于取消粘贴事件。

    autocomplete="off" 用于防止自动完成。

    setInterval(() =&gt; { ... }, 100); 用于定期检查输入并删除任何数字或特殊字符。 这会阻止用户在开发者控制台中使用input.value = " ... " 将输入值设置为无效值,因为输入会自动更正。

    const input = document.getElementById('cleanse');
    
    setInterval(() => {
      input.value = input.value.replace(/[^a-zA-Z ]/g, "");
    }, 100);
    &lt;input type="text" data-value-field="value" name="styleName" onkeypress="return /[a-z]/i.test(event.key)" onpaste="return false" autocomplete="off" id="cleanse" /&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多