【问题标题】:Input allow numbers and single comma输入允许数字和单个逗号
【发布时间】:2017-02-21 22:19:29
【问题描述】:

我有一个输入字段,我想在其中只允许数字和 1 个逗号。我怎样才能让它只接受一个逗号?

$("#my-field").on("keyup", checkKey);

function checkKey() {
    this.value = this.value.replace(/[^0-9,]/g, "");
}

【问题讨论】:

  • 写一个正则表达式来匹配逗号?
  • 不要这样做。它对用户不友好。给东西上色,或输入信息,但不要让键盘失灵。
  • 你可以查看这篇文章! -> stackoverflow.com/questions/5570820/…
  • 您应该更具体地了解要匹配的所需格式。

标签: javascript jquery validation


【解决方案1】:

你可以这样做:

function checkKey() {
    var clean = this.value.replace(/[^0-9,]/g, "")
                           .replace(/(,.*?),(.*,)?/, "$1");
    // don't move cursor to end if no change
    if (clean !== this.value) this.value = clean;
}

// demo
document.querySelector('input').oninput = checkKey;
<input>

这将删除所有重复的逗号,以及它们之间的所有内容。这不是问题,因为您一次按一个键。

备注

这种输入验证的阻塞方式对用户不友好。最好给东西上色或放置消息,而不是让键盘失灵。

考虑使用内置数字验证的<input type="number"> 元素。

input 事件对于检查 input 中的更改通常比 keyup 更有用,因为更改也可以通过鼠标操作和上下文菜单进行。

如果要允许使用点而不是逗号,则将正则表达式中的每个, 更改为\.,因为. 在正则表达式中具有特殊含义,必须转义才能被视为文字字符。

【讨论】:

  • 希望通过模式验证来代替
猜你喜欢
  • 1970-01-01
  • 2017-04-13
  • 2022-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多