【发布时间】:2012-04-24 06:03:37
【问题描述】:
这是我当前的代码,当用户键入时,它会从输入中删除除 $、逗号和点之外的所有非数字字符:
<input type="text" id="price" name="price" onkeyup="updatePrice(this.value)">
function updatePrice(p) {
document.getElementById("price").value = p.replace(/[^0-9$.,]/g, '');
}
问题在于它会在输入字符后删除字符,因此如果您输入 A,您会在几分之一秒内看到它,然后它就会消失。 Keydown 不好,因为它在输入实际更改之前运行脚本。
我怎样才能完全防止这些被禁止的字符出现在输入中?
【问题讨论】:
-
请记住,这将不会禁止用户实际将它们发送到服务器,因此您还需要处理无效的输入服务器端
-
请不要理会用户界面。提交表单时您只需要适当的值,同时您不在乎它们是什么。在用户打字时弄乱值真的很烦人,而且是一种反可用性功能。无论如何,监控击键并不会阻止用户输入您不想要的字符。
标签: javascript