如何在JQuery中捕获TextArea文本更改事件

问题描述:

我正在使用QR码阅读器JavaScript。
此JavaScript使用相机捕获图像,尝试解码QR码并将解码后的文本设置为TextArea作为输出。如何在JQuery中捕获TextArea文本更改事件

这很好。

但是,当文本设置为TextArea我需要捕获事件,所以我可以做进一步的处理。

我曾尝试与可用的解决方案不同的组合如下:

$('.barcodeInput').change(function(){ 
    debugger; 
    alert("changed"); 
}); 

第二

$('body').delegate('.barcodeInput', 'keyup change', function(){ 
    alert("changed"); 
}); 
$('.barcodeInput').bind('input propertychange', function() { 
    debugger; 
    alert("changed"); 
}); 

在我已经定义了所有这些并出侧document.ready(function(){ // code here});

但它仍然不是很好。

我的QR码解码JavaScript在成功解码后将文本设置为TextArea。

我可以手动触发事件形成JavaScript,但这将是补丁工作。

我想永久解决这些问题。

谢谢你是进步

+0

我不知道你的实际问题是什么,但'change'仅火灾时,在元素失去焦点。尝试使用'输入'代替。 –

+0

你的jQuery版本如何?你为什么不用'.on()'监听器来尝试? – Jai

+0

当你改变Textarea的值时,你的插件是否触发'trigger('change')'事件? – Justinas

你可以使用change().on(),像重视事件:

$('.barcodeInput').change(function(){ 
    alert("changed"); 
}); 
//Or 
$('.barcodeInput').on('change', function(){ 
    alert("changed"); 
}); 

当您更改文本,你可以调用事件:

textarea.val('new val').change(); 
//Or 
textarea.val('new val').trigger('change'); 

注意:binddelegate已弃用。

希望这会有所帮助。

$('.barcodeInput').on('change', function(){ 
 
    alert("changed"); 
 
}); 
 

 
$('.barcodeInput').val('new val').change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea class='barcodeInput'></textarea>

+0

感谢您的回答,但.change()或.trigger(更改)都不适用于我的案例。我有QRCode阅读JavaScript分开,所以可能是它不工作。 – Prasad

+0

你在使用任何库吗? –

+1

对不起,它的工作正常,由于JavaScript缓存而无法工作。我清除了浏览器的所有数据并重试。现在它的工作很好..非常感谢。 – Prasad