检查数组indexof()如果按下按钮,不要检查是否直接从cookie加载数据

时间:2018-11-29 09:37:04

标签: javascript node.js cookies socket.io

我正在尝试创建一个聊天室网站,现在,当您加载该网站时,您会看到以下输入字段,要求您输入这样的名称:enter image description here 输入名称并按下旁边的按钮“继续聊天”后,它将使用以下方式设置用户名:

function setUsername() {
    var textbox = document.getElementById("name");
    var txtboxval = textbox.value;
    if(textbox.value.length <= 20 && textbox.value.length >= 4){
      socket.emit('setUsername', document.getElementById('name').value);
      setCookie("username", txtboxval, 30);
      socket.on('userExists', function(data) {
        document.getElementById('messages').innerHTML = data;
      });
    }
    else{
        alert("Nimen on oltava vähintään 4 kirjainta pitkä");
        return false;
      }
    };

只要符合要求,它就会将名称设置为您输入的名称,并将其显示在您发送的邮件中,还将值设置为cookie。

这将设置用户名,并应检查用户名是否存在:

socket.on('setUsername', function(data) {
      console.log(data);

        if(users.indexOf(data) > -1) {
          socket.emit('userExists', data + ' Username already in use, try another one.');
        } else {
          users.push(data);
          socket.emit('userSet', {username: data});
          console.log(users);
      }
    });

它应该检查数组是否已经存在该名称,但是不存在,在加载cookie后,如果设置了它们,它会自动进入发送消息页面,但是由于找不到消息而将不允许发送消息名称的变量,因为检查器阻止了它的检查。

我需要的是一种在首次设置名称时使检查器工作的方法,该方法可以防止重复,但允许不检查是否已在其中设置了用户数据的cookie。

注意:socket.on函数和setUsername函数在不同的页面上,socket.on位于“ App.js”中,而setUsername和设置cookie的函数位于“ Index.html”中。

0 个答案:

没有答案