如何在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()); });