Search code examples
keyboardpasswordsenterkeycode

Getting an error message when executing a function when the user releases a key on the keyboard using event.keyCode ===13


I'm trying to create a function that allows users to press enter on their keyboards to validate a password field. I keep getting page not found message when the password is wrong after hitting enter on the keyboard. If I click the enter button on the password box my alert pops up and nothing happens ,as intended. I basically want the same exact result from clicking the enter button on the keyboard. How can I get this to work properly?

Below is a link to the Pen I am currently trying to work with.

https://codepen.io/Pacman0006/pen/LYbqQYa

//creates a funtion that validates password
function computerPassword() {
var val = document.getElementById('password').value;
if (val =="Joker") {
  window.open("https://www.google.com");
  //location.href="https://www.google.com";
}else{
  //keep getting errors so I added this 
  //to open in same window when user inputs wrong after hitting enter
  //window.open("https://www.bing.com", "_parent");
 alert("that is the wrong password");
}
}

var input = document.getElementById("password");

// Execute a function when the user releases a key on the keyboard; from W3Schools.com
input.addEventListener("keyup", function(event) {
  // Number 13 is the "Enter" key on the keyboard
  if (event.keyCode === 13) {
    // Cancel the default action, if needed
    event.preventDefault();
    // Trigger the button element with a click
    document.getElementById("go").click();
         }
});
@import "compass/css3";

* { box-sizing: border-box; }

body {
    font-family: "HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;
  color:white;
  font-size:12px;
  background:#333 url(/images/classy_fabric.png);
}

form {
    background:#111; 
  width:300px;
  margin:30px auto;
  border-radius:0.4em;
  border:1px solid #191919;
  overflow:hidden;
  position:relative;
  box-shadow: 0 5px 10px 5px rgba(0,0,0,0.2);
}

form:after {
  content:"";
  display:block;
  position:absolute;
  height:1px;
  width:100px;
  left:20%;
  background:linear-gradient(left, #111, #444, #b6b6b8, #444, #111);
  top:0;
}

form:before {
    content:"";
  display:block;
  position:absolute;
  width:8px;
  height:5px;
  border-radius:50%;
  left:34%;
  top:-7px;
  box-shadow: 0 0 6px 4px #fff;
}

.inset {
    padding:20px; 
  border-top:1px solid #19191a;
}

form h1 {
  font-size:18px;
  text-shadow:0 1px 0 black;
  text-align:center;
  padding:15px 0;
  border-bottom:1px solid rgba(0,0,0,1);
  position:relative;
}

form h1:after {
    content:"";
  display:block;
  width:250px;
  height:100px;
  position:absolute;
  top:0;
  left:50px;
  pointer-events:none;
  transform:rotate(70deg);
  background:linear-gradient(50deg, rgba(255,255,255,0.15), rgba(0,0,0,0));
  
}

label {
    color:#666;
  display:block;
  padding-bottom:9px;
}

input[type=text],
input[type=password] {
    width:100%;
  padding:8px 5px;
  background:linear-gradient(#1f2124, #27292c);
  border:1px solid #222;
  box-shadow:
    0 1px 0 rgba(255,255,255,0.1);
  border-radius:0.3em;
  margin-bottom:20px;
}

label[for=remember]{
    color:white;
  display:inline-block;
  padding-bottom:0;
  padding-top:5px;
}

input[type=checkbox] {
    display:inline-block;
  vertical-align:top;
}

.p-container {
    padding:0 20px 20px 20px; 
}

.p-container:after {
    clear:both;
  display:table;
  content:"";
}

.p-container span {
  display:block;
  float:left;
  color:#0d93ff;
  padding-top:8px;
}

input[type=submit] {
    padding:5px 20px;
  border:1px solid rgba(0,0,0,0.4);
  text-shadow:0 -1px 0 rgba(0,0,0,0.4);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.3),
    inset 0 10px 10px rgba(255,255,255,0.1);
  border-radius:0.3em;
  background:#0184ff;
  color:white;
  float:right;
  font-weight:bold;
  cursor:pointer;
  font-size:13px;
}

input[type=submit]:hover {
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.3),
    inset 0 -10px 10px rgba(255,255,255,0.1);
}

input[type=text]:hover,
input[type=password]:hover,
label:hover ~ input[type=text],
label:hover ~ input[type=password] {
    background:#27292c;
}
<form>
  <h1>Input Your Password</h1>
  <div class="inset">
 
  <p>
    <label for="password">Password</label>
    <input type="password" name="password" id="password">
  </p>
  
  </div>
  <p class="p-container">
    
    <input type="button" name="go" id="go" value="Enter" onclick="computerPassword();">
  </p>
</form>


Solution

  • Ok, so I think I figured out the problem. Lonny B mentioned posting a Form to a server which I had no intention of doing. However, it got me thinking that a form element by nature may be looking for this server without me explicitly telling it to. Whether it is or isn't Im not entirely sure but I changed the form element to a Div in my html and now it works as expected.