【问题标题】:How do I use jquery to validate an input field on change?如何使用 jquery 在更改时验证输入字段?
【发布时间】:2011-06-19 14:28:37
【问题描述】:

我有一个input 字段:

<input type="text" name="notifyEmail" id="parametersEmail" value="" size=40 />

当我点击标签或以其他方式离开该字段时,我有一段 jquery 代码可以工作,这会调用验证例程:

$("#parametersEmail").blur(function(event) {
    validateParameterEmail();
});

我想做的是在输入字段的值或内容发生变化时运行validateParameterEmail() 函数。

然后我也尝试了.change() 处理程序:

$("#parametersEmail").change(function(event) {
    validateParameterEmail();
});

但是当我更改parametersEmail 的内容时,这个处理程序不会调用验证函数。

我应该使用另一个处理程序吗?或者我不能将多个事件处理程序附加到输入字段?

【问题讨论】:

  • fyi... 在输入文本字段中, .blur() 和 .change() 实际上是相同的东西。区别是模糊=失去焦点,而变化=失去焦点+不同的价值。重点是无论哪种方式,您都必须失去对它的关注。如果您希望每次用户输入字符时调用该函数,因为他们正在输入,然后使用其他人提到的 .keyup 或 .keydown

标签: jquery input validation onchange blur


【解决方案1】:

试试$("#parametersEmail").keydown(function(event) {})

【讨论】:

  • .keydown() 似乎在输入值更改之前实际触发。换句话说,如果您键入1234,这将在123 上生效。同样,如果您键入1234[delete],它将在1234 上验证。 .keyup() 可能更适合表单验证。
【解决方案2】:

试试这个:

$("#parametersEmail").bind('blur', function(event) {} );

$("#parametersEmail").bind('keyup', function(event) {} );

【讨论】:

    【解决方案3】:

    (几乎是 2017 年的现实)

    最好的方法是在所有需要输入值变化的事件上设置一次回调。

    有:

    • keyup : 用户在输入中输入了一些内容
    • change :关于输入中存储更改的常见已知方法
    • 单击:某些输入也可以通过鼠标进行更改
    • 粘贴:是的! Ctrl+V、Crtl+Ins、RightMouseButton+Paste也可以改变输入值
    • propertychange : 当某些 JS 以任何方式更改我们的输入时,将触发此事件
    • input : 支持所有现代浏览器的新标准事件,也可以使用它

    所以,我们可以一次全部设置:

    $("#parametersEmail").bind("propertychange change click keyup input paste", function(event) {
        validateParameterEmail();
    });
    

    希望这对某人有所帮助。 ;)

    【讨论】:

      【解决方案4】:

      更改是指当您单击离开/从输入中移动时。您可能正在寻找onKeyUp()

      【讨论】:

        猜你喜欢
        • 2018-02-16
        • 1970-01-01
        • 2013-07-23
        • 1970-01-01
        • 2016-08-25
        • 2015-02-24
        • 2015-09-20
        • 2018-11-10
        • 1970-01-01
        相关资源
        最近更新 更多