我有一个输入字段,我想只允许数字和1个逗号。我怎么能让它只接受单个逗号?
$("#my-field").on("keyup", checkKey);
function checkKey() {
this.value = this.value.replace(/[^0-9,]/g, "");
}
答案 0 :(得分: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;

<input>
&#13;
这将删除所有重复的逗号以及它们之间的所有内容。这不是问题,因为您一次只按一个键。
这种阻止输入验证的方式是用户不友好的。为了使键盘失效,最好给事物上色或放置信息。
input
事件通常对于检查input
中的更改比keyup
更有用,因为也可以通过鼠标操作和上下文菜单进行更改。