Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不需要的字符出现之前将其从文本输入中删除_Javascript_Html_Regex - Fatal编程技术网

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')">