在Socket.io上使用OnChange发送数据

时间:2017-07-13 18:44:59

标签: javascript jquery html node.js socket.io

我想使用 socket.io 将选择框值发送到我的NodeJS服务器 onchange()

现在,我可以发送按钮,如下面的代码所示;

server.js;

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res) {
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket) {
  socket.on('socketdeneme', function(msg) {
    console.log("Message received: " + msg);
  });
});

http.listen(2000, function() {
  console.log('listening on *:2000');
});

的index.html;

<!doctype html>
<html>

<head>
  <title>Socket.IO chat</title>
  <script src="/socket.io/socket.io.js"></script>
  <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
  <script type="text/javascript">
    $(function () {
      var socket = io();

      $('form').submit(function() {
        socket.emit('socketdeneme', $('#m').val());    
      });

    });
  </script>
</head>

<body>
  <form action="">
    <select id=m multiple>
      <option value="dnm">dnm</option>
      <option value="dnm1">dnm1</option>
      <option value="dnm2">dnm2</option>
    </select>
    <button>Send</button>
  </form>
</body>

</html>

另一方面,下面的代码使用 onchange()函数发送数据,但我无法将其与 socket.io 一起使用。

<script type="text/javascript">
        function submitformfabrika() {
          document.formsubmitfabrika.submit();
        }
</script>

1 个答案:

答案 0 :(得分:0)

您可以使用.change方法(https://api.jquery.com/change/)发出将由服务器接收的socketdeneme事件。

替换

$('form').submit(function() {
  socket.emit('socketdeneme', $('#m').val());    
});

$('form').change(function() {
     socket.emit('socketdeneme', $('#m').val());    
});