Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не работает кнопка, после удаления атрибута disabled (https://javascript.ru/forum/misc/83474-ne-rabotaet-knopka-posle-udaleniya-atributa-disabled.html)

buryak154 18.12.2021 14:27

не работает кнопка, после удаления атрибута disabled
 
Вложений: 1
добрый день! начинаю изучать js, поставлена задача: при нажатии на кнопку login, открыть новую страницу в том же окне. Все работало, пока не добавила атрибут disabled для кнопки, чтобы не работала, пока поля имейл и пароль не заполнены. теперь, кнопка активной становится (т.е. disabled отключается), но нова страница перестала открываться. помогите, пожалуйста, разобраться :-?

рони 18.12.2021 15:18

:-? забавный случай ... если кто-то разберётся напишите ответ, куда '_self' девается когда атрибут убирается.
const email = document.querySelector('.login__input_email');
const emailError = document.querySelector('.error_login');
const emailCheck = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/iu;
const password = document.querySelector('.login__input_password');
const passwordError = document.querySelector('.error_password');
const login = document.querySelector('.btn_login');
const todo = document.querySelector('.todo');
const loginPage = document.querySelector('.login');
function validateEmail (value){
    return emailCheck.test(value);
}
function showError(){
    if (validateEmail (email.value)) emailError.style.color = 'white';
    else emailError.style.color = 'red';
}
email.addEventListener('input', showError);
function showErrorPass(){
    if (password.value.length >=8)
        passwordError.style.color = 'white';  
    else  passwordError.style.color = 'red';
}
password.addEventListener('input', showErrorPass);
function checkLength() {
    if ((password.value.length >= 8) && (validateEmail (email.value))) {
        login.removeAttribute('disabled');
    } 
}
password.addEventListener('keyup', checkLength);
email.addEventListener('keyup', checkLength);
function goTodo(){
    window.open('todo.html','_self',false);
}
login.addEventListener('click',goTodo);

рони 18.12.2021 15:23

buryak154,
попробуй так.

function goTodo(event){
    event.preventDefault();
    window.open('todo.html','_self',false);
}

buryak154 18.12.2021 15:34

все работает так, спасибо!!:dance:


Часовой пояс GMT +3, время: 01:46.