我有一个输入字段,我只想在其中输入数字和 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/