2015-12-04 3 views
1

Я пытаюсь зарегистрировать сообщение, введенное в поле ввода в консоли. Я следую в приведенном ниже примереПример сокета socket.io - проблема с отправкой формы

http://socket.io/get-started/chat/

проблема я столкнулся, когда я печатаю сообщение и нажмите на кнопку отправить, страница автоматически обновляется, несмотря на использование «возвращать ложь» в сценарии. console.log также не показывает 'сообщение вошел', который заставляет меня верить, что сценарий Isnt получение вызывается

<script type="text/javascript"> 
    var socket = io(); 
    $('#chat-form').on('submit',function(){ 
     console.log('message entered'); 
     socket.emit('chat message', $('#m').val()); 
     $('#m').val(''); 
     return false; 
    }); 
    </script> 
    </head> 
    <body> 
    <ul id="messages"></ul> 
    <form id='chat-form'> 
     <input id="m" autocomplete="off" /><button type='submit'>Send</button> 
    </form> 

index.js

io.on('connection',function(socket){ 
    console.log('a user connected'); 

    socket.on('disconnect',function(){ 
    console.log('user disconnected'); 
    }); 

    socket.on('chat message',function(msg){ 
    console.log('message: '+msg) 
    }); 

}); 

Я даже попытался event.preventDefault(). но страница все еще обновляется по форме submit.

Спасибо, KJ

ответ

0

Проверить с F12 Tools/Firebug все, если Javascript выполняется на всех.

0

В момент запуска вашего сценария #chat-form нет в DOM (потому что HTML следует сценарию).

Перемещайте <script> направо перед тем </body> или ждать ready события перед извлечением элементов DOM:

var socket = io(); 
$(function() { 
    $('#chat-form').on('submit',function(){ 
    console.log('message entered'); 
    socket.emit('chat message', $('#m').val()); 
    $('#m').val(''); 
    return false; 
    }); 
}); 
Смежные вопросы