#javascript #html #css
#javascript #HTML #css
Вопрос:
В следующем коде: https://jsfiddle.net/4gfqnyas / существует чистая функция Java script, которая перемещает div <div id="btn"></div>
влево или вправо (а также изменяет формы) при нажатии кнопки входа или регистрации.
Как мне сделать так, чтобы div оставался в том же положении, в каком я его оставил, после каждой перезагрузки (или после нажатия кнопки регистрации отправки). Я не хочу, чтобы div возвращался в положение входа после перезагрузки (или после нажатия кнопки регистрации отправки).
Например: допустим, я нажимаю на Register, div переместится в register, и форма также изменится на register. Теперь, когда я нажимаю кнопку отправки регистрации, div автоматически переходит к логину, а также к форме, что делает невозможным отображение каких-либо ошибок в форме регистрации, если пользователь ввел неверную информацию. Я хочу, чтобы он оставался в той же форме после перезагрузки или после нажатия соответствующих кнопок отправки.
Комментарии:
1. вы можете просто добавить параметр запроса или хэш-тег в зависимости от того, какой экран вы показываете, и прочитать его с URL-адреса и соответствующим образом изменить
Ответ №1:
Чтобы исправить это, вы можете использовать localStorage
.
Обратите внимание, что некоторые супер старые браузеры не поддерживают localStorage
, но это не так уж и важно, их почти ни у кого нет.
Дайте мне знать, если это сработает. 🙂
Вот исправленная версия (CSS остается прежним) :
HTML :
<div class="hero">
<div class="form-box">
<div class="button-box">
<div id="btn"></div>
<button type="button" id="loginButton" class="toggle-btn" onclick="login()">Login</button>
<button type="button" id="registerButton" class="toggle-btn" onclick="register()">Register</button>
</div>
<div class="social-icons">
<img src="images/fb.png">
<img src="images/gp.png">
<img src="images/tw.png">
</div>
<form method="POST" action="val_log.php" id="login" class="input-group">
<input name="Lname" type="text" class="input-field" placeholder="User ID" minlength="4" maxlength="15">
<input name="Lpassword" type="password" class="input-field" placeholder="Enter Password" minlength="5" maxlength="60">
<input name="Lrempass" type="checkbox" class="check-box"><span> Remember Password</span>
<button name="Lsubmit" type="submit" class="submit-btn"> Login </button>
</form>
<form method="POST" action="val_reg.php" id="register" class="input-group">
<input name="Rmail" type="email" class="input-field" placeholder="Email ID" >
<input name="Rname" type="text" class="input-field" placeholder="User ID" minlength="4" maxlength="15">
<input name="Rpassword" type="password" class="input-field" placeholder="Enter Password" minlength="5" maxlength="60">
<input name="REpassword" type="password" class="input-field" placeholder="Re-Enter Password" maxlength="60">
<input name="Rterms" value="selected" type="checkbox" class="check-box" ><span> I agree to the terms amp; conditions</span>
<button name="Rsubmit" type="submit" class="submit-btn" > Register </button>
</form>
</div>
</div>
JS :
var x = document.getElementById("login");
var y = document.getElementById("register");
var z = document.getElementById("btn");
console.log(x)
function register(){
x.style.left = "-400px";
y.style.left = "50px";
z.style.left = "110px";
}
function login(){
x.style.left = "50px";
y.style.left = "450px";
z.style.left = "0";
}
// Added code
if(localStorage){
if(localStorage.getItem('rememberButtonChoice')){
let getChoice = localStorage.getItem('rememberButtonChoice');
if(getChoice == "loginChoice"){
login();
}
else{
register();
}
}
}
let loginButton = document.getElementById('loginButton');
let registerButton = document.getElementById('registerButton');
loginButton.addEventListener('click', function(){
if(localStorage){
localStorage.setItem("rememberButtonChoice", 'loginChoice');
}
});
registerButton.addEventListener('click', function(){
if(localStorage){
localStorage.setItem("rememberButtonChoice", 'registerChoice');
}
});
Комментарии:
1. Если localstorage недоступен, вы можете использовать файл cookie и уничтожить его позже.
2. Все, что вам нужно 🙂
Ответ №2:
Когда ваша страница перезагружается, она теряет все данные и устанавливает для себя значение инициализации данных по умолчанию. Вы можете использовать localStorage для отслеживания того, что вы нажали. Что-то похожее на приведенный ниже пример.
И вы сказали, что хотите отобразить ошибку при перезагрузке страницы, поэтому в первую очередь, почему вы хотите перезагрузить. Вы также можете показывать их без перезагрузки страницы, а если вы используете отправку формы на стороне сервера, вы можете использовать параметры запроса url для ведения истории кликов.
var x = document.getElementById("login");
var y = document.getElementById("register");
var z = document.getElementById("btn");
function register(){
x.style.left = "-400px";
y.style.left = "50px";
z.style.left = "110px";
window.localStorage.setItem("cur_page", "register");
}
function login(){
x.style.left = "50px";
y.style.left = "450px";
z.style.left = "0";
window.localStorage.setItem("cur_page", "login");
}
const cur_page = window.localStorage.getItem("cur_page");
switch (cur_page) {
case "login":
login();
break;
case "register":
register();
break;
default:
login();
}
Комментарии:
1. Спасибо, что оба решения (ваше и вышеупомянутое) сработали хорошо.