2013-10-01 94 views
-1

Keyup和Down沒有觸發。jquery上的keyUp和Keydown沒有觸發,而ajax代碼是

viewmenu將更改內容取決於選擇菜單。它的工作很好。但formsearch不再有效。 $(document).ready(function()位於主文件中。我只是嵌入js.js,似乎它不會運行document ready script

這裏是我的代碼:

<script type="text/javascript" src="asset/jquery-1.9.1.js"></script>

<script type="text/javascript" src="asset/js.js"></script>

$(document).ready(function(){ 
    var typingTimer;    //timer identifier 
    var doneTypingInterval = 2000; //time in ms, 5 second for example 

    $('#formsearch').find(':input').each(function(){ 
      $(this).keyup(function(){ 
      typingTimer = setTimeout(doneTyping, doneTypingInterval); 
     }); 
    }) 
}); 

Js.js包含:

viewMenu = function(v){ 
    $.ajax({ 
     type: 'GET', 
     url: 'index.php?task='+v, 
     beforeSend: function(){ 
      $('#display').html('LOADING...'); 
     }, 
     success: function(d){ 
      $('#display').html(d); 
     } 
    }); 
} 
+0

他們以什麼方式「不工作」? – CodingIntrigue

+1

爲什麼使用.each()爲什麼不直接綁定到元素? – Anton

+0

他們應該做什麼? 'doneTyping'中有什麼,'viewMenu'與這個有什麼關係?控制檯中是否有錯誤? – JJJ

回答

0

如果您通過ajax更新了表單中的內容。

您應該在下面綁定事件喜歡代碼,因爲添加新內容時您的DOM已更改。這將清除DOM更改之前綁定的事件。

$('#formsearch').on('keyup', ':input', function(){ 
    typingTimer = setTimeout(doneTyping, doneTypingInterval); 
}); 
0

將其綁定到最接近的父級靜態元素如下所示:

$('#formsearch').on('keyup',':input',function(){ 
    typingTimer = setTimeout(doneTyping, doneTypingInterval); 
});