输入允许数字和单个逗号

Ton*_*niq 1 javascript validation jquery

我有一个输入字段,我只想允许数字和1个逗号.我怎么能让它只接受单个逗号?

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

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

tri*_*cot 6

你可以这样做:

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;
Run Code Online (Sandbox Code Playgroud)
<input>
Run Code Online (Sandbox Code Playgroud)

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

备注

这种阻止输入验证的方式是用户不友好的.为了使键盘失效,最好给事物上色或放置信息.

input事件往往是检查中的变化更为有用inputkeyup,因为更改还可以通过鼠标操作和上下文菜单中进行.