2012-11-28 82 views
0

我一直在使用jQuery的Keyup方法,它似乎不適用於我。我去Jfiddle上創建它,並確定它在那裏工作。但是,當將其上傳到網站或在本地運行時,它不起作用。我在這裏做錯了什麼?Keyup not firing

<html> 
    <head> 
    <title>Untitled Document</title> 
    <script src="http://code.jquery.com/jquery-1.8.3.js"></script> 
    <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> 
    <script> 
     $('#TAcomments').keyup(function() { 
     var textCount = $(this).val().length; 
     if(textCount <= 10) { 
      $('#TAcomments').stop().animate({ fontSize : '22px' }); 
     } 
     if(textCount > 10) { 
      $('#TAcomments').stop().animate({ fontSize : '16px' }); 
     } 
     if(textCount > 20) { 
      $('#TAcomments').stop().animate({ fontSize : '14px' }); 
     } 
     if(textCount > 30) { 
      $('#TAcomments').stop().animate({ fontSize : '10px' }); 
     } 
     }); 
    </script> 
    </head> 
    <body> 
    <textarea id="TAcomments" style="width: 400px; height: 300px; font-size: 22px;"></textarea> 
    </body> 
</html> 
+0

爲什麼這麼多的複製和粘貼操作來改變一個值?使用一個變量。 '$('#TAcomments')。stop()。animate({fontSize:theValue});'使用'else if'! – epascarello

回答

3

您需要等到文檔準備就緒。

$(document).ready(function(){ 
    $('#TAcomments').keyup(function() { 
     var textCount = $(this).val().length; 
     if(textCount <= 10) { 
      $('#TAcomments').stop().animate({ fontSize : '22px' }); 
     } 
     if(textCount > 10) { 
      $('#TAcomments').stop().animate({ fontSize : '16px' });    
     } 
     if(textCount > 20) { 
      $('#TAcomments').stop().animate({ fontSize : '14px' }); 
     } 
     if(textCount > 30) { 
      $('#TAcomments').stop().animate({ fontSize : '10px' }); 
     } 
    }); 
}); 

jsfiddle在onload事件後默認運行代碼。

+0

真棒謝謝!爲什麼在文檔準備好後需要運行? – ios85

+0

由於HTML可能尚未正確加載......所以基本上可能會出現競態條件,其中當元素在DOM中不可用時正在定義事件。 –

+0

如果您不等待文檔是準備好了,代碼只能看到腳本標記上方的dom元素。例如,在這種情況下,您只能定位「head」,「html」,「title」或腳本節點。 –

0

您需要將腳本中的代碼包裝到$(function() { /* ... */ });中您可以看到代碼在onDomReady中運行時的作品here