2017-03-03 95 views
3

我正在使用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

回答

2

你可以使用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