javascript - 输入允许数字和单个逗号

标签 javascript jquery validation

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

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

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

最佳答案

你可以这样做:

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 ,因为也可以通过鼠标操作和上下文菜单进行更改。

如果你想允许点而不是逗号,那么改变每个,\.在正则表达式中,如 .在正则表达式中有特殊含义,必须进行转义才能作为文字字符。

关于javascript - 输入允许数字和单个逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42379057/

相关文章:

javascript - 将 SQL 的表输出样式化到相应的 Bootstrap 列中

javascript - 如果在某些网页上运行脚本

浏览器调整大小的 JavaScript

jquery - 使用 jQuery 选择和更改多个 CSS 类

javascript - 使用 javascript 在 html 中分配标题

validation - Ember 验证 : Installation

javascript - 事件倒序

.net - 使用自定义模型绑定(bind)器绑定(bind)非顺序列表

validation - 带有前缀的控件的 Asp.Net MVC2 客户端验证问题

javascript - 剪掉字符串的一部分