Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.11.2024, 00:03
Новичок на форуме
Отправить личное сообщение для Бел ка Посмотреть профиль Найти все сообщения от Бел ка
 
Регистрация: 19.11.2024
Сообщений: 3

Проверка на ввод
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Year Input Validation</title>
    <style>
        input, select {
            background-color: hsl(215,100%,90%);
            color: hsl(215,100%,40%);
            border: 1px solid hsl(215,100%,40%);
            outline: none;
        }
    </style>
</head>
<body>
    <div id="inp">
        <input type="text" size="4" id="desiredYear" />
        <select id="desiredEra">
            <option>до н.э.</option>
            <option selected>н.э.</option>
        </select>
    </div>
    <script type="text/javascript">
        var input = document.getElementById('desiredYear');
        var select = document.getElementById('desiredEra');
        var inputTimeout;

        input.addEventListener('input', (e) => {
            clearTimeout(inputTimeout);
            changeInputType('number');

            inputTimeout = setTimeout(() => {
                processInput(e.target.value);
            }, 800);
        });

        input.addEventListener('focusout', () => {
            changeInputType('text');
        });

        function changeInputType(type) {
            input.type = type;
        }

        function processInput(value) {
            // Удаление пробелов
            value = value.trim();

            // Ограничение на ввод символов
            if (!/^[\\d\\+\\-]*$/.test(value)) {
                input.value = '';
                return;
            }

            // Удаление лишних символов
            if (value.match(/[\\+\\-]{2,}/)) {
                input.value = value.replace(/[\\+\\-]{2,}/g, '');
                return;
            }

            // Проверка на длину
            if (/^\\d+$/.test(value) && value.length > 6) {
                input.value = value.slice(0, 6);
                return;
            } else if (/^[\\+\\-]?\\d+$/.test(value) && value.length > 7) {
                input.value = value.slice(0, 7);
                return;
            }

            // Удаление знаков в начале
            if (/^[\\+\\-]/.test(value)) {
                value = value.slice(1);
            }

            // Удаление ведущих нулей
            value = value.replace(/^0+/, '');

            // Если всё равно пусто, установить "1"
            if (value === '' || value === '0') {
                input.value = '1';
                select.selectedIndex = 0; // "до н.э."
            } else {
                input.value = value;
            }

            // Логика для выбора века
            if (parseInt(input.value) < 0) {
                select.selectedIndex = 0; // "до н.э."
                input.value = Math.abs(parseInt(input.value)).toString();
            } else {
                select.selectedIndex = 1; // "н.э."
                input.value = parseInt(input.value).toString();
            }
        }
    </script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 19.11.2024, 00:08
Новичок на форуме
Отправить личное сообщение для Бел ка Посмотреть профиль Найти все сообщения от Бел ка
 
Регистрация: 19.11.2024
Сообщений: 3

помогите исправить скрипт, все введенные данные удаляются, как сделать чтобы удалялись только ведущие нули и знак - или +, и в зависимости от того отрицательное или положительное число, переключался селектед в выпадающем списке
Ответить с цитированием
  #3 (permalink)  
Старый 19.11.2024, 13:53
Новичок на форуме
Отправить личное сообщение для Бел ка Посмотреть профиль Найти все сообщения от Бел ка
 
Регистрация: 19.11.2024
Сообщений: 3

надо запретить ввод символов кроме знаков - + и цифр, надо запретить ввод более шестизначного числа, с знаком или без, надо запретить ввод знаков между цифрами, и после цифр, знак может быть только перед цифрами, в поле не может быть более одного знака - или +, при вводе 0, 000, 000000, без знака или со знаком - или +, скрипт должен исправить значение на 1 г. до н.э., когда пользователь начинает вводить в инпут, тип поля должен изменится с type="text" на type="number"

спустя 0.7сек после того как пользователь прекратил ввод данных, скрипт должен обрезать знак и ведущие нули, если они есть, и переключить селектед между опциями в случае необходимости, вернуть первоначальное значение type="text"

возможно ли это сделать на js ?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Readline, ввод двух строк и проверка их на соответсвие Карина2000 Node.JS 1 27.06.2022 21:34
Проверка на ввод данных пользователем Frida4 Общие вопросы Javascript 6 15.12.2017 16:43
проверка формы не работает в ie begelme Javascript под браузер 6 13.08.2013 01:00
ввод и проверка адреса cyklop77 Элементы интерфейса 0 01.11.2010 23:50
Плагин на Jquery - проверка на ввод данных VeliaR jQuery 1 26.10.2010 15:22