【发布时间】:2015-08-03 09:29:37
【问题描述】:
第一次输入后点击提交,出现一个li,很好。但是当我第二次单击它时,输出被打印了 2 次和 3 次,它被打印了 3 次,依此类推。为什么?我只希望它每次点击打印一次。
客户:
var socket = io()
var name;
var msg;
$("#nameForm").on("submit", function(e){
var name = $(".nameInput").val()
socket.emit("heres name", name);
socket.on("outputName", function(data){
name = data;
$(".messages").append("<li>" + name +"</li>")
// $("#nameForm").fadeOut()
})
e.preventDefault();
})
html:
<div class="chatArea">
<ul class="messages"></ul>
</div>
<form id = "nameForm">
<input type="text" class="nameInput"><button>Enter Name</button>
</form>
<form id = "msgForm">
<input class="msgInput" type= "text"></input><button>Enter message</button>
</form>
<script src ="http://code.jquery.com/jquery-2.1.1.js"></script>
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
index.js:
var express = require("express")
var app = express();
var server = require("http").createServer(app);
var io = require("socket.io")(server);
var port = process.env.PORT || 8080;
server.listen(port, function(){
console.log("server is listening on port %d", port)
})
app.use(express.static(__dirname + "/public"));
var usernames = {};
var numUsers = 0;
var msg;
io.on("connection", function(socket){
var addedUser = false;
socket.on("heres name", function(username){
++numUsers;
addedUser = true
usernames.username = username
socket.emit("outputName", usernames.username)
})
})
【问题讨论】:
标签: javascript jquery socket.io chat