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

时间:2014-06-09 17:29:47

标签: 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);">

这个想法是允许用户知道在输入时会发生的文本清除类型(只允许使用单个空格的字母数字字符,最后的最后一个空格 - 如果有的话 - 在PHP)。

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

  • 可以按住不需要的字符的键以避免 onkeyup事件,然后点击&#34;提交&#34;同时。这导致 要提交的不需要的字符
  • 我不希望不需要的字符出现在文本输入中 首先,他们可以被拒绝,然后才能被看到 浏览器?

2 个答案:

答案 0 :(得分:2)

您可以使用onInput事件。

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

参考:setting oninput event with Javascript

答案 1 :(得分:0)

我不会禁用显示的不良字符,用户可能找不到那种友好但这是一种主观意见。

他们可以提交不良数据不是问题。您永远不会信任来自浏览器的数据到您的服务器。他们总是可以禁用javascript等

如果出于可用性目的,您不希望发生提交,则可以执行此类操作。

编辑:没有jquery ...对不起,你可以使用 FormOnSubmit

<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应该适合你