Javascript 在不需要的字符出现之前将其从文本输入中删除
我有一个限制文本输入的函数:Javascript 在不需要的字符出现之前将其从文本输入中删除,javascript,html,regex,Javascript,Html,Regex,我有一个限制文本输入的函数: function alphaNumericSpace(inInput) { inInput.value = inInput.value.replace(/[^\w ]/g, "").replace(/^ +|( ) +/g, "$1"); } 下面是一个使用它的文本输入示例: <input name="type" type="text" maxlength="32" onkeyup="alphaNumericSpace(this);">
function alphaNumericSpace(inInput) {
inInput.value = inInput.value.replace(/[^\w ]/g, "").replace(/^ +|( ) +/g, "$1");
}
下面是一个使用它的文本输入示例:
<input name="type" type="text" maxlength="32" onkeyup="alphaNumericSpace(this);">
这样做的目的是让用户知道在输入文本时会发生什么样的文本清除(只允许使用带有单个空格的字母数字字符,最后的空格(如果有的话)在PHP中被删除)
但是,我想解决两个问题:
- 可以按住不需要的字符的键以避免 单击“启动”事件,同时单击“提交”。这导致 要提交的不需要的字符
- 我甚至不希望不需要的字符出现在文本输入中 首先,它们是否可以在显示在屏幕上之前被拒绝 浏览器
- 我不会禁用显示的坏字符,用户可能不会觉得友好,但这是一种主观意见
他们可以提交不好的数据,这应该不是问题。您永远不能信任从浏览器发送到服务器的数据。他们总是可以禁用javascript等
如果出于可用性目的,您不希望提交发生,您可以这样做
编辑:没有jquery。。。很抱歉,但是你可以用
您可以使用onInput
事件
<input oninput="alert('hello')">
参考资料:您考虑过使用jQuery吗?我不想使用jQuery,网站不使用它,我也不想引入它来解决这个问题。我确信,如果可以在jQuery中完成,那么就可以在JavaScript中完成。也就是说,我不关心Internet Explorer或真正的旧浏览器,如果它重要的话,它与此站点无关,那么也许您可以尝试输入元素上的onInput
属性@AVP,我不知道那个事件,它似乎做了我想做的事情(它甚至捕捉到复制/粘贴)。如果你回答我会接受为什么重要,客户端验证只是为了增强用户体验,你也应该在服务器端清洗数据,因此,如果有人千方百计绕过验证而提交了无效字符,这不重要。OP不希望使用jQuery.Updated。为了解决这个问题,我没看到。
<input oninput="alert('hello')">