Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.01.2016, 18:49
Интересующийся
Отправить личное сообщение для salexseen Посмотреть профиль Найти все сообщения от salexseen
 
Регистрация: 24.03.2014
Сообщений: 11

Форма валидация
Почему результат 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>

Последний раз редактировалось salexseen, 19.01.2016 в 19:17.
Ответить с цитированием
  #2 (permalink)  
Старый 19.01.2016, 19:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

salexseen,
Цитата:
lastIndex
Свойство lastIndex есть у каждого объекта типа RegExp.
Доступное на запись целочисленное свойство, которое указывает индекс, с которого начинать следующий поиск
Ответить с цитированием
  #3 (permalink)  
Старый 19.01.2016, 19:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

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

2 способ экономичнее.
Ответить с цитированием
  #4 (permalink)  
Старый 19.01.2016, 19:17
Интересующийся
Отправить личное сообщение для salexseen Посмотреть профиль Найти все сообщения от salexseen
 
Регистрация: 24.03.2014
Сообщений: 11

спасибо разобрался
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма отправки сообщения с сайта hardwolf Элементы интерфейса 20 24.10.2016 15:00
Валидация: unobtrusive и обычная валидация. Как скрестить? dux1 Элементы интерфейса 2 27.07.2015 08:31
откуда была отправлена форма ? avanesov89 Общие вопросы Javascript 3 16.04.2014 17:50
Не передается форма в выводе результатов через ajax tot18 AJAX и COMET 4 06.03.2014 16:15
не работает форма в окне, вызванном jquery page slide ikar jQuery 0 31.07.2011 22:55