2012-08-14 129 views

回答

3

您不應該使用setInterval。您應該使用onchange事件。

http://jsfiddle.net/QwBU8/

document.getElementById('myinput').onchange=change; 
document.getElementById('mytextarea').onchange=change; 
function change(e){ 
    if(!e){e=window.event;} 
    document.getElementById('log').innerHTML+='Element with id "'+this.id+'" has changed\n'; 
} 

但要注意,此事件不會在該文本框被修改的那一刻解僱;它在失去焦點時會被解僱(當然,只有當它發生了變化)。

如果您想在每次修改時觸發事件,您可以使用oninput(但它不受所有瀏覽器支持)。

但是避免使用setInterval,它會吃掉很多資源。假設您在瀏覽器中打開了30個選項卡,並且它們都有不同的setInterval。瀏覽器將凍結!

1

您可以使用window.setInterval功能定期執行某些功能:

window.setInterval(function() { 
    // do your check here => this will run every second 
}, 1000); 
1

你可以做兩件事情,運行與setInterval一個功能,定期檢查textarea的值,或綁定組合的mousedown,​​,keyup,和keyup事件來檢測輸入數據的各種可能的方法,然後比較textarea文本的當前長度和最後一個值(最初爲0)以查看是否有變化。如果有,請調用該函數。

1
window.setInterval(function() { 
    if(($('#textbox').val() != "")){ 
     //do something or call function 
} 
else{ 
     // do something or call function  
} 

}, 1000);