在文本输入中不需要的字符出现之前将其删除

Remove unwanted characters from text input before they appear

本文关键字:删除 字符 输入 文本 不需要      更新时间:2023-09-26

我有一个限制文本输入的函数:

function alphaNumericSpace(inInput) {
    inInput.value = inInput.value.replace(/[^'w ]/g, "").replace(/^ +|( ) +/g, "$1");
}

以下是使用它输入文本的示例:

<input name="type" type="text" maxlength="32" onkeyup="alphaNumericSpace(this);">

这样做的目的是让用户知道在输入文本时会发生什么样的文本清除(只允许使用带有单个空格的字母数字字符,如果有的话,在PHP中会删除末尾的最后一个空格(。

然而,这有两个问题,我想解决:

  • 按住不需要的字符的键可以避免onkeyup事件,同时点击"提交"。这导致要提交的不需要的字符
  • 我甚至不希望不需要的字符出现在文本输入中首先,它们在浏览器

您可以使用onInput事件。

<input oninput="alert('hello')">

参考:使用Javascript 设置输入事件

我不会禁用坏字符的显示,用户可能觉得不友好,但这是一种主观的看法。

他们可以提交糟糕的数据,这应该不是问题。您永远无法将来自浏览器的数据信任到服务器。他们总是可以禁用javascript等

如果出于可用性的考虑,你不想提交,你可以这样做。

编辑:没有jquery。。。很抱歉,但你可以表单提交

<from id="myid" onsubmit="formsubmit"
function formsubmit () {
        e.preventDefault(); // this will prevent the submit.
        // Check for good data
        // if good submit, else reject the submit
 });

如果你真的不想让他们出现keydown应该对你有效