Jquery输入值变化检测

时间:2011-11-07 22:20:03

标签: javascript jquery javascript-events

如何检测输入值是否因模糊事件而改变?

例如,每个输入字段都有默认值(可以为空),在当前输入松开后我们应该确定焦点,值是否已更改。

怎么做?

5 个答案:

答案 0 :(得分:7)

订阅.change()而不是.blur()。这样你就会知道值已经改变了。

答案 1 :(得分:6)

您可以切换到.change()事件而不是.blur(),但我认为这在各方面都存在根本缺陷。我建议使用Jonathan Azoff的Changed jQuery插件(http://www.azoffdesign.com/changed)。在这种情况下,这可能有点过头了,所以......

有很多方法可以做到这一点,其中一种方法是将旧值存储为输入的数据属性,然后将输入值与模糊时的旧值进行比较。如果两个值不同,则更改。

示例:

    <input type="text" name="firstname" data-old="Jack">

您可以使用后端类型的东西存储此值,甚至可以在页面加载时执行此操作。然后在模糊,你可以有一个像这样的事件:

    $('input').blur(function() {
        if ($(this).data('old') != $(this).val())
            // It changed! Do something!
    }

如果旧值为“Jack”,然后您将名称更改为“Bob”并触发模糊事件,则会看到“Jack”不等于“Bob”,并执行您的操作。

希望有所帮助。祝你好运。

答案 2 :(得分:4)

直接来自jQuery文档

$("input[type='text']").change( function() {
  // check input ($(this).val()) for validity here
});

答案 3 :(得分:3)

比较 defaultValue

<input onblur="if(this.value!=this.defaultValue){alert('changed');}">

答案 4 :(得分:1)

您可以保存焦点上的输入值,并使用模糊输入中的值进行检查。