Почему JS не будет перенаправлять веб-страницу, когда утверждение верно?

У меня есть вход для имени пользователя и один для пароля. Когда имя пользователя и / или пароль не совпадают, я успешно получаю "предупреждение", но когда они совпадают, ничего не происходит. Я не могу понять, что я делаю неправильно.

я пытался windows.location.replace а также с теми же результатами.

function user1() {
    var user = document.getElementById('username').value
    var pass = document.getElementById('password').value
  
    if (user == "admin" && pass == "password1") {
        window.location ("http://stackru.com");
    }
    else {
        alert('incorrect username or password')
    }
}
<form>
    <label for="username" id="user">User</label>
    <input type="text" placeholder="Username" name="username" id="username">
    <br>
    <label for="password">Pass</label>
    <input type="password" name="password" id="password" placeholder="Password">
    <br>
    <button onclick="user1()">Submit</button>
</form>

3 ответа

Решение

Так должно быть

window.location = 'http://stackru.com';

вместо вызова функции. Другой проблемой была кнопка, вызывающая перезагрузку страницы. Чтобы исправить это, вы должны сделать:

<button type="button" onclick="user1()">Submit</button>

type="button" запретит отправку формы по умолчанию.


демонстрация

function user1() {
  var user = document.getElementById('username').value
  var pass = document.getElementById('password').value
  
  if (user == "admin" && pass == "password1") {
   window.location = "http://stackru.com";
  }
  else {
    alert('incorrect username or password');
  }
}
<form>
  <label for="username" id="user">User</label>
  <input type="text" placeholder="Username" name="username" id="username">
  <br>
  <label for="password">Pass</label>
  <input type="password" name="password" id="password" placeholder="Password">
  <br>
  <button type="button" onclick="user1()">Submit</button>
</form>

window.location="url"

function user1() {
  var user = document.getElementById('username').value
  var pass = document.getElementById('password').value
  
  if (user == "admin" && pass == "password1") {
   window.location="http://stackru.com";
}

  else {
    alert('incorrect username or password')
  }
}
<form>
    <label for="username" id="user">User</label>
    <input type="text" placeholder="Username" name="username" id="username">
    <br>
    <label for="password">Pass</label>
    <input type="password" name="password" id="password" placeholder="Password">
    <br>
    <button onclick="user1()">Submit</button>
   </form>

Предполагая, что вы ищете window.open, где window.location также будет работать

function user1() {
  var user = document.getElementById('username').value
  var pass = document.getElementById('password').value

  if (user == "admin" && pass == "password1") {
    window.open("https://stackru.com");
  } else {
    alert('incorrect username or password')
  }
}
<form>
  <label for="username" id="user">User</label>
  <input type="text" placeholder="Username" name="username" id="username">
  <br>
  <label for="password">Pass</label>
  <input type="password" name="password" id="password" placeholder="Password">
  <br>
  <button onclick="user1()">Submit</button>
</form>

Другие вопросы по тегам