有关input输入框内容改变后的触发事件

有关input输入框内容改变后的触发事件,也是今天遇到的问题。我使用时间插件为输入框填充内容,想实现输入框内容改变后执行相应的方法,发现使用change方法没有反应。百度了半天,最后才发现问题所在。

我这边考虑两种情况,一种是input输入框正常输入,另一种是给输入框赋值。

1、input输入框正常输入

所谓的正常输入,就是在input输入框当中进行手动输入,这种情况下change方法是有效的。

change事件的原理:在元素获得焦点时,保存当前值,失去焦点时,会将当前值与原保存的值进行比较,如果不同,则触发change事件。

以下方式可以兼容所有的浏览器,与change的原理相似:

$("input#id").focus(function(){
$(this).attr("data-oval",$(this).val()); //将当前值存入自定义属性
}).blur(function(){
var oldVal=($(this).attr("data-oval")); //获取原值
var newVal=($(this).val()); //获取当前值
if (oldVal!=newVal)
{
//do what you want
}
}

2、给输入框赋值

我这边使用的是时间插件给input赋值,该插件有定义一个选完事件后的一个回调函数。如果是使用插件的话,可以看下源码当中有没有定义类似change的方法。
如果是通过脚本给input赋值的话,可以在赋值完再执行change事件。这是百度看到的,还没有测试过,有看到的人可以自行测试一下。

###   写的第一个博客,觉得问题可以记录下来。也是菜鸟一只,看到的可以参考参考,有问题也请包容,并可以提出来,一起学习。

你可能感兴趣的:(有关input输入框内容改变后的触发事件)