如何在jQuery / javascript中设置一个监听器来监控文本框中的值是否已更改?

如何在jQuery / javascript中设置一个监听器来监控文本框中的值是否已更改? 通过连接到平板电脑的条形码扫描仪将值输入文本框,因此每次扫描项目时,文本框中的值都会发生变化。我需要根据文本框中的值显示一些信息。

这取决于您的扫描仪输入值的方式,以及输入值后扫描仪软件的function。

如果扫描仪在输入值后将焦点从textarea移开,您可以执行以下操作:

 $('yourTextarea').bind('change', function () { alert("Changed to " + $(this).val()); }); 

如果它没有取消焦点,你将不得不监视按键,并在一段时间不活动后作出反应。

 $('yourTextarea').bind('keypress', function () { var self = $(this); clearTimeout(self.data('timeout')); self.data('timeout', setTimeout(function() { alert("Changed to " + $(this).val()); }, 500)); }); 

您的扫描仪也可以在textarea中模拟paste事件;

 $('yourTextarea').bind('paste', function () { var self = $(this); setTimeout(function () { alert("Changed to " + self.val()); }, 1); }); 

您将能够试验您的扫描仪以查看它使用的方法(或者如果您懒惰则实施所有方法)。


请注意 ,这篇文章是在2010年5月写回来的,当时最新版本的jQuery是1.6.1; 从那时起, bind()已被替换为on() 。 如果您使用的是jQuery> 1.7版本,请在上面的代码中将所有出现的bind更改为on

实际情况是,jQuery中的“更改”事件在所有浏览器中并不总是可行的,一些较旧的事件不能正确处理事件。 我在许多项目中遇到过这个问题,通常需要绑定到textarea的一些属性来捕获用户交互。 如果它是文本类型的输入区域,它可以更简单,但通常你需要用一些事件监听器来覆盖你的基础。

我会看看一些正在做字符计数器的人如何编写代码来听取textarea的值,然后设置你的代码到

试着掩盖你的基础,也许尝试这样的事情:

 $('#textareatextID').bind('keyup click blur focus change paste', function() { alert($(this).val()); }); 

这也让你不得不设置定时器,因为我不知道条形码扫描器用来改变textarea值的方法,我的建议是相当广泛的。

怎么样:

 $('#textbox').change(function() { alert($(this).val()); });