2016-11-21 3 views
1

Я пытаюсь перенаправить в другой файл после успешного входа в систему. Тем не менее, похоже, что я не смог перейти на b.html после успешного входа в систему. Кажется, он остается на той же странице. Я попытался document.location.href, window.location.replace, но это не похоже на работуjQuery перенаправить на другой файл

<script> 
    window.onload = function() { 
     document.addEventListener("deviceready", init, false); 
    } 

    function init() { 
     document.getElementById("btnSave").addEventListener("click", saveData, false); 
     document.getElementById("btnGet").addEventListener("click", getData, false); 
    } 

    function getData() { 
     var email1 = document.getElementById("email1").value; 
     var pass1 = document.getElementById("password1").value; 
     var email2 = window.localStorage.getItem("email"); 
     var pass2 = window.localStorage.getItem("pass"); 
     if (email1 == email2 && pass1 == pass2) { 
      alert("Login successfully"); 
      window.location.href = "/b.html"; 
     } else { 
      alert("Invalid login credentials"); 
     } 
    } 
</script> 
<form class="login-form"> 
    <input type="email" id="email1" name="email1" placeholder="Email Address" required/> 
    <input type="password" id="password1" name="password1" placeholder="Password" required/> 
    <button id="btnGet" type="submit" name="submit">Login</button> 
</form> 
+1

использовать полный URL с доменом и проверить. http://stackoverflow.com/questions/6109527/window-location-href-not-working-in-form-onsubmit – Cruzer

+0

1. Не называть ничего 'name =" submit "в форме. 2. Если вы отправите форму, вы покинете страницу, и сценарий может не получить время для выполнения, или форма ничего не отправит на сервер. Вместо этого нужно перенаправить действие формы. 3. используйте полный URL-адрес в location.href - PS: измените кнопку, чтобы набрать = «кнопка», если вам нужно сделать JavaScript в обработчике - иначе делайте вещи на сервере или отмените отправку – mplungjan

+0

, но если у меня есть форма action redirect, не будет ли он по-прежнему направлять пользователя на эту страницу, даже несмотря на его неудачный вход? – fypforstack

ответ

4

Причина, почему ваш Перенаправление не работает, что нажав на кнопку Login отправляет форму. Это нормальное поведение веб-браузера. В этом случае вам необходимо предотвратить это поведение по умолчанию.

Использование jQuery, вы можете сделать это следующим образом:

$('form.login-form').submit((e) => { 
    e.preventDefault(); 
}); 

Поскольку вы не используете jQuery в коде вообще, вы могли бы быть заинтересованы в такой версии:

form.addEventListener('submit', e => { 
    e.preventDefault(); 
}); 

Альтернативным решением было бы не добавлять атрибут type="submit" к кнопке входа.

Но самое лучшее, что вы можете сделать (и то, что используют интернет-пользователи), - это перенаправить пользователя после отправки формы. Тогда это будет работать не только тогда, когда пользователь нажимает на кнопку, но, когда он нажимает ENTER и т.д.

Тогда ваш код должен выглядеть следующим образом:

(() => { 
    let form; 

    function init() { 
     form = document.querySelector('login-form'); 

     if (!form) { 
      throw new ElementNotFoundException(); 
     } 

     form.addEventListener('submit', onSubmitHandler); 
    } 

    function onSubmitHandler(e) { 
     e.preventDefault(); 

     // get values, validate... 

     window.location.href = 'b.html'; 
    } 

    init(); 
}); 
1

Возможно расположение HREF не правильно прописан, пожалуйста, замените window.location.href = "/b.html"; до window.location.href = "b.html";

+0

пробовал это ранее, не работает ни – fypforstack

+0

Вы уверены, что b.html в том же каталоге, где находится ваш html? –

+0

да, я пробовал header(), и он работает, не работает с этим jquery, хотя – fypforstack

Смежные вопросы