Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Форма валидация (https://javascript.ru/forum/misc/60776-forma-validaciya.html)

salexseen 19.01.2016 18:49

Форма валидация
 
Почему результат alert меняется постоянно, ведь если в инпуте введены числа то должно быть всегда true. Если нажимать на кнопку отправить несколько раз то сначала выводит true, а в следующий раз false и так далее. В чем может быть причина?

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form id="form">
        <div>
            <label>
                <div>Телефон</div>
                <input type="text" name="phone" value="1234">
            </label>
        </div>
        <div>
            <input type="submit" value="Отправить">
        </div>
    </form>
    <script>
    var phoneReg = new RegExp('^[0-9]+$', 'gi');
    var form = document.getElementById('form');

    form.addEventListener('submit', function(e){
        e.preventDefault();
        var inputs = this.getElementsByTagName('input');
        var input = Array.prototype.slice.call(inputs);
        input.forEach(function(item){
            if (item.name == 'phone'){
                alert(phoneReg.test(item.value));
            }
        });
    });
</script>
</body>
</html>

рони 19.01.2016 19:09

salexseen,
Цитата:

lastIndex
Свойство lastIndex есть у каждого объекта типа RegExp.
Доступное на запись целочисленное свойство, которое указывает индекс, с которого начинать следующий поиск

рони 19.01.2016 19:14

salexseen,
либо 20 строку перенести в начало 29, либо в 29 добавить обнуление индекса.
phoneReg.lastIndex = 0;

2 способ экономичнее.

salexseen 19.01.2016 19:17

спасибо разобрался


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