2015-10-07 3 views
1

Я понятия не имею, что я делаю неправильно. Следующий код - это просто самая последняя итерация случайного дерьма, которую я пробовал:Jquery keypress не работает с socket.io

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>{{title}}</title> 
    <link rel="stylesheet" href="../css/home.css"> 
    <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
    <script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io(); 
    $(document).ready(function() { 
    $(document).keypress(function(e) { 
     if (e.which == 13) { 
      alert('You pressed enter!'); 
     } 
    }); 
}); 
</script> 
</body> 
</html> 

Я использую firefox. Я приложу app.js, если это необходимо, но я уверен, что для jQuery просто не нужно указывать кнопку и показывать предупреждение. Я еще не использовал события сокета. Когда я запускаю сервер, все работает нормально, но когда я нажимаю кнопку, ничего не происходит. Вот мой app.js:

var express = require('express'); 
var app = express(); 
var http = require('http').Server(app); 
var path = require('path'); 
var io = require('socket.io').listen(http); 
app.set('views', path.join(__dirname, 'views')); 
app.engine('html', require('hogan-express')); 
app.set('view engine', 'html'); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.get('/', function(req, res){ 
    res.render('index', {title:'test'}); 
}); 
http.listen(3000, function(){ 
    console.log('listening on localhost:3000'); 
}); 
+1

<сценарий SRC = "/ socket.io/socket.io.js"> должен быть <сценарий SRC = "// socket.io/socket .io.js "> - Единственное, что я вижу на вашей странице неправильно. – iamjpg

ответ

0

Обновите версию JQuery Использование:

<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script> 

удалить также unnecesary $ (документ) .ready ({}); функция.

Используйте следующий код:

$(document).keydown(function (e) { 
    if (e.which == 13) { 
     alert('You pressed enter!'); 
    } 
}); 

или использовать этот один:

$(document).bind("keydown",function (e) { 
    if (e.which == 13) { 
     alert('You pressed enter!'); 
    } 
}); 

Проверьте следующие скрипку:

http://jsfiddle.net/hacker1211/bk56hg5k/

+0

Пробовал все четыре ваших предложения. Ничего ... Спасибо, хотя. Я положу свой app.js в редактирование. –

+0

хорошо, пожалуйста, сделайте это так, чтобы я мог отлаживать ваш код –

+0

, пожалуйста, проверьте последние изменения и ссылку на скрипку –

1

Отсутствующие </head> и <body> на HTML файл ,

Я обновил и он работал на меня:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>{{title}}</title> 
</head> 
<body> 
    <link rel="stylesheet" href="../css/home.css"> 
    <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
    <script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io(); 
    $(document).ready(function() { 
    $(document).keypress(function(e) { 
     if (e.which == 13) { 
      alert('You pressed enter!'); 
     } 
    }); 
}); 
</script> 
</body> 
</html> 
+0

Все еще не работает на моей машине с Windows 7 с Firefox 41. Если интересно, см. Мой другой комментарий для получения дополнительной информации. –

+0

Возможно, вы захотите попробовать другой браузер. Также вы можете проверить, блокируете ли вы всплывающие окна или какое-либо расширение FF блокирует всплывающие окна. Я тестировал FF, Chrome и Safari, и все отлично работало. –