2016-12-10 3 views
0

Ich habe ein kleines Problem hier aus irgendeinem Grund. Ich habe eine andere Seite mit fast genau dem gleichen Code und es leitet den Benutzer auf die Seite um, auf die ich möchte. Aus irgendeinem Grund tut dies nicht. Ich habe versucht, die if-Anweisung und alles bis zu dem Punkt zu kommentieren, nur die window.location.replace mit der Klick-Aktion und immer noch kein Glück.window.location.replace funktioniert nicht mit jquery

JS

$(document).ready(() => { 
     $("#login-button").click(() =>{ 
     if($("#pwd").val() === 'pass' && $("#username").val() === 'taylor') { 
     alert("Welcome: " + $("#username").val()); 
     window.location.replace('../index.html'); 
     } else { 
     alert("You have the wrong password and username"); 
     } 
     }); 
    }); 

HTML

  <form id="login-form"> 
      <div class="form-group"> 
       <label for="username">Username:</label> 
       <input type="text" class="form-control" id="username"> 
      </div> 
      <div class="form-group"> 
       <label for="pwd">Password:</label> 
       <input type="password" class="form-control" id="pwd"> 
      </div> 
      <div class="checkbox"> 
       <label><input type="checkbox"> Remember me</label> 
      </div> 
      <button id="login-button" class="btn btn-danger">Login</button> 

      </form> 
+0

Sie jquery enthalten sind, sicher einreichen Standard zu stoppen? –

Antwort

4

Sie verkennen, was location.replace() für verwendet wird. Zum Umleiten verwenden Sie stattdessen location.href.

window.location.href = '../index.html'; 

Die location.replace() Methode ersetzt die aktuelle Ressource mit dem eine an der URL bereitgestellt. Der Unterschied zur Methode assign() besteht darin, dass nach der Verwendung von replace() die aktuelle Seite nicht im Sitzungsverlauf gespeichert wird, dh der Benutzer kann die Zurück-Schaltfläche nicht verwenden, um dorthin zu navigieren.

Sie müssen auch das Senden des Formulars verhindern. Dies führt dazu, dass die Seite an sich selbst zurückgesendet wird. Fügen Sie in Ihrem Formular den Ereignishandler submit hinzu.

e.preventDefault(); 
+0

Versucht, location.replace durch location.href = '.../index.html' zu ersetzen; und die gleichen Ergebnisse zu bekommen, tut einfach nichts. Ich füge auch die e.preventDefault(); – Tbaustin

+0

Ich musste nur die e innerhalb der Click-Funktion Parameter hinzufügen und es hat funktioniert, vielen Dank. – Tbaustin

+0

Ich dachte, das war auch korrekt, aber anscheinend [location.replace()] (https://devdocs.io/dom/window/location) ist ein gültiger Ansatz –

1

Sie müssen nur das Formular

html

<form id="login-form"> 
    <div class="form-group"> 
    <label for="username">Username:</label> 
    <input type="text" class="form-control" id="username"> 
    </div> 
    <div class="form-group"> 
    <label for="pwd">Password:</label> 
    <input type="password" class="form-control" id="pwd"> 
    </div> 
    <div class="checkbox"> 
    <label> 
     <input type="checkbox"> Remember me</label> 
    </div> 
    <button id="login-button" class="btn btn-danger">Login</button> 

</form> 

jQuery

$(function() { 
    $("#login-button").click((e) { 
    if ($("#pwd").val() === 'pass' && $("#username").val() === 'taylor') { 
     alert("Welcome: " + $("#username").val()); 
     window.location.href('../index.html'); 
     e.preventDefault(); 
    } else { 
     alert("You have the wrong password and username"); 
     e.preventDefault(); 
    } 
    }); 
}); 
+0

Dies funktionierte vergessen, das e innerhalb der Klickfunktion bei zu setzen zuerst. Vielen Dank! – Tbaustin

Verwandte Themen