@Fresko1991

Как сделать чтоб alert не вылазил бесконечное число раз?

Делаю простой курс доллара к рублю и при вводе букв в инпуты хочу чтоб поле окрашивалось в красный и вылазила ошибка.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Курс доллара</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <section class="changer">
        <div class="changer-container">
            <label for="rub">RUB</label>
            <input id="rub" class='inputv' type="text">
            <label for="usd">USD</label>
            <input id="usd" class='inputv' type="text">
        </div>
    </section>
    <div class="alert alert-success" style="display: none;">Успешно</div>
    <script src="script.js"></script>
</body>
</html>


* {
    box-sizing: border-box;
}

html {
    font-family: sans-serif;
}
.changer-container {
    width: 100%;
    text-align: center;
    margin-top: 200px;
}

label {
    display: block;
    font-size: 30px;
}
input {
    width: 300px;
    height: 50px;
    font-size: 30px;
    margin-bottom: 50px;
}
/* .inputv:hover {
    filter: grayscale(100%) drop-shadow(5px 5px 10px #666);
} */

.alert-success {
    background:green;
    margin:20px auto;
    padding:20px;
    color:#fff;
    width:200px;
}


const inputRub = document.querySelector('#rub');
const inputUsd = document.querySelector('#usd');

inputRub.addEventListener('input',() => {

    const request = new XMLHttpRequest();

    request.open('GET','current.json');
    request.setRequestHeader('Content-type', 'application/json; charset=utf-8');
    request.send();


    inputRub.addEventListener('input', () => {
        if(inputRub.value.match(/\D/g)) {
            inputRub.style.background = 'red';
            alert('Используйте только числовые значения!');
            
        } else {
            inputRub.style.background = 'none';
                        
        }
    });

    inputUsd.addEventListener('input', () => {
        if(inputUsd.value.match(/\D/g)) {
            inputUsd.style.background = 'red';
            alert('Используйте только числовые значения!');
            
        } else {
            inputUsd.style.background = 'none';
                        
        }
    });


    request.addEventListener('load', () => {
        if (request.status === 200) {
            const data = JSON.parse(request.response);
            inputUsd.value = (+inputRub.value / data.current.usd).toFixed(2);
        } else {
            inputUsd.value = "Что-то  пошло не так";
        }
    });
});


{
    "current": {
        "usd": 74.68
    }
}
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы