繁体   English   中英

如何将表单输入值传递给socket.emit parms中的变量

[英]How to pass form input value into variable in socket.emit parms

我想将username输入从表单传递到socket.emit params 但是,当我进入socket.on functionuserName是未定义的。 这应该是范围问题,而我不知道如何解决。 我省略了一些代码以简化问题。 不必使代码可运行,我只想获取方法如何处理此问题。

 $("button").click(function (event) { event.preventDefault(); setUserName($("input[name=name]").val()); }); var userName; function setUserName(userName2) { userName=userName2; } var socket = io(); socket.on('connect', function () { var params = { name:userName } socket.emit('join', params, function (err) { }); }); 
 <body class="centered-form"> <div class="centered-form__form"> <form> <div class="form-field"> <label>Display name</label> <input type="text" name="name" autofocus/> </div> <div class="form-field"> <button id="submit">Submit</button> </div> </form> </div> </body> <script src="/libs/jquery-3.1.0.min.js"></script> <script src="/chat.js"></script> 

您的userName有范围问题

 $("button").click(function (event) { event.preventDefault(); setUserName($("input[name=name]").val()); }); var userName; function setUserName(userName) { //this refers to the scope of the function this.userName=userName; } var socket = io(); socket.on('connect', function () { var params = { //this refers to the scope of the socket name:this.userName } socket.emit('join', params, function (err) { }); }); 

尝试

 $("button").click(function (event) { console.log('__BUTTON_EVENT__'); event.preventDefault(); let name = $("input[name=name]").val(); console.log('__USER_NAME__: ', name); setUserName(name); }); var userName; function setUserName(name) { userName = name; } var socket = io(); socket.on('connect', function () { var params = { name:userName } console.log('__CONNECTING__: ', params.name); socket.emit('join', params, function (err) { }); }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM