2013-11-28 41 views
0

此代碼用於使用jQuery的聊天應用程序。 fetchMsg方法工作得很好。問題出在入口類textarea,由於某種原因bind函數不起作用。它不響應任何關鍵事件。我試過live函數和on函數。問題是在JavaScript中,或者我應該將textarea標記更改爲輸入類型文本標記?jquery綁定函數不起作用

// delcare new js global object 

var chat = {} 

chat.entry = $('.chat .entry'); 

// binding keydown event handler 
// THIS PART DOESNT WORK 
chat.entry.bind('keydown', function(e) { 
    console.log(e.keyCode); 
    if (e.keyCode === 13 && e.shiftKey === false) { 
    chat.throwMsg($(this).val()); 
    } 
    e.preventDefault(); 
}); 

// fetch msgs method 
chat.fetchMsg = function() { 
    $.ajax({ 
    url: 'engine/chat.php', 
    type: 'post', 
    data: { 
     method: 'fetch' 
    }, 
    success: function(data) { 
     $('.chat .msgs').html(data); 
    } 
    }); 
} 
chat.throwMsg = function(msg) { 
    if ($.trim(msg).length != 0) { 
    $.ajax({ 
     url: 'engine/chat.php', 
     type: 'post', 
     data: { 
     method: 'throw', 
     msg: msg 
     }, 
     success: function(data) { 
     chat.fetchMsg(); 
     chat.entry.val(''); 
     } 
    }); 
    } 
} 

chat.interval = setInterval(chat.fetchMsg, 2000); 
+0

其中是html標記 –

+1

您的代碼在'document.ready()'處理程序中嗎? – Barmar

+2

如果你發佈相關的HTML部分,這將是有益的 –

回答

0

試試這個

$(document).ready(funciton(){ 
$(document).on('keydown', '.chat .entry', function (evt) { 
    console.log(e.keyCode); 
    if(e.keyCode === 13 && e.shiftKey === false) 
    { 
     chat.throwMsg($(this).val()); 
    } 
    e.preventDefault(); 
    }); 

});