2013-10-11 69 views
2

我有jQuery代碼調用一個函數爲這樣的不點火。當我輸入和刪除文本時,函數被調用的很好,但是當我選擇所有文本時,無論是通過熱鍵還是拖動鼠標,然後點擊退格鍵,函數都不會被調用。這是我無法獲得調用函數的唯一實例。這是否預期與'input propertychange'事件?如果是這樣,我怎麼能改變這個按預期工作?請注意,這適用於Chrome,IE和Firefox。jQuery函數綁定如預期

+0

正確屄文字你能使用keyup事件呢? –

回答

3

這是否適合您的目的?

$('#text_area').on('keyup', function() { 
    console.log('called'); 
}); 

小提琴:http://jsfiddle.net/KyleMuir/ruJZD/

而且,如jQuery的1.7 .on()http://api.jquery.com/on/)的是結合事件的首選方式。

編輯:因爲有人右鍵單擊粘貼的文本後,這裏是一個更新:

$('#text_area').on('keyup paste', function() { 
    console.log('called'); 
}); 

小提琴:http://jsfiddle.net/KyleMuir/ruJZD/9/

+0

感謝您的建議!我沒有提到我嘗試過這種方式,它沒有捕獲到「input propertychange」沒有的方式。 –

+0

它不適用於通過點擊鼠標右鍵粘貼文本。 –

+0

@VitaliiKorsakov見更新。 –

2

你需要調用一個函數時,你的文本區域被清除。或者當文本被粘貼到文本區域時,您想調用相同的功能。

您可以使用相同的代碼包含在您的問題中。我已經包括了這個答案

<textarea id='textarea1'>data</textarea> 

// ....................

$("textarea").bind('input propertychange', function(){ 
    alert($(this).val()); 
}); 

注意一個工作演示:使用jQuery插件

DEMO

如果你想防止同時觸發然後用下面的代碼

<textarea id="textarea"></textarea> 

// .......

var text = ""; 
$("#textarea").on("change keyup paste", function() { 
    var Val = $(this).val(); 
    if(Val == text) { 
     return; //prevent multiple simultaneous triggers 
    } 

    text = Val; 

    alert("changed!"); 
}); 

DEMO1

'Note: Checked with chrome and firefox' 
0

.bind方法已經被廢棄了最新3j的查詢版本。取而代之的是我們可以使用.on來獲得正確的答案。

<textarea id="anytextid"></textarea> 
<div id="sethere"></div> 

你這種變化

$('#anytextid').on('input propertychange', function() { 
    $('#sethere').html($(this).val().length); 
});