创建登录时遇到问题

时间:2017-01-16 21:18:56

标签: javascript

我正在努力确保我们的用户名中包含一个数字,密码为012345678.这是正确的吗?我的HTML中有一个包含电子邮件,用户名和密码的表格。

document.getElementById("login").addEventListener("submit", function(event) {
  event.preventDefault();

  var user = document.querySelector(" input[name=username]");
  var pass = document.querySelector(" input[name=password]");

  if (user.value.includes(0) ||
    user.value.includes(1) ||
    user.value.includes(2) ||
    user.value.includes(3) ||
    user.value.includes(4) ||
    user.value.includes(5) ||
    user.value.includes(6) ||
    user.value.includes(7) ||
    user.value.includes(8) ||
    user.value.includes(9)) {
    // user is good
    //now.. check the password
  } else {
    alert("Incorrect");
  }

  if (pass == 012345678) {
  } else {
    alert("Incorrect");
  }

  var Hmmm = document.getElementsByClassName("h1")[1]; {
    document.querySelector("h1").innerText = "Good Job"
  }    
});

2 个答案:

答案 0 :(得分:0)

不太对,不。

您的“通行证”和“用户”变量将保留字符串。所以你需要对它们使用字符串函数,并将它们与字符串进行比较。

这意味着您不能使用“包含”,因为它不是有效的string function。相反,你会使用

user.value.indexOf("0")>=0 // indexOf will return -1 if it can't find what you are looking for

话虽如此,使用regular expressions测试一个字符串是否包含至少一个数字有更好的方法:

user.value.match(/[0-9]/)

最后,正如我所说,你需要将字符串与字符串进行比较。所以对于你的密码检查:

pass.value === "012345678"

我使用了严格相等运算符(===),因为在这种情况下,您绝对希望该值为此完整字符串。当您使用普通等式运算符(==)时,可能会发生某些有时会发生的转换并产生误报。

希望这有帮助!

答案 1 :(得分:0)

我建议使用Regex



window.onload = function() {
  document.getElementById('test').onclick = function() {
    // test username
    var uname = document.getElementById('username').value;
    // test password
    var password = document.getElementById('password').value;

    if (checkUsername(uname) && checkPassword(password)) {
      console.log('everything is good!');
    } else {
      console.log('something is wrong');
    }
  }
}

function checkUsername(uname) {
  // checks if the username contains a digit with regex
  if (/\d/.test(uname)) {
    console.log('Username contains digit');
    return true;
  } else {
    console.log('Username needs to have a digit in it.');
    return false;
  }
}

function checkPassword(password) {
  // checks the password to be equal to string constant
  if (password === '012345678') {
    console.log('good password');
    return true;
  } else {
    console.log('bad password');
    return false;
  }
}

<label for="username">Username: <input type="textbox" id="username" /></label>
<label for="password">Password: <input type="password" id="password" /></label>
<input type="button" id="test" value="Submit" />
&#13;
&#13;
&#13;