Var regex с условием if и else if

Тема в разделе "JavaScript", создана пользователем Myles, 12 апр 2019.

Метки:
  1. Myles

    Myles Создатель

    Регистр.:
    11 июн 2015
    Сообщения:
    30
    Симпатии:
    1
    Здравствуйте. Подскажите, пожалуйста. Написал следующий код для проверки номера телефона при оформлении покупки с условием, если выбрана одна страна (присваивается класс opt216), то можно ввести только 10 цифр. Если все остальные, то от 10 до 14.
    Код:
    function validatePhoneNumber(s)
    {
        if ($('div').hasClass("opt216")) {
            var reg = /^\+(?:[0-9] ?){10}$/;
    
        }else {
            var reg = /^\+(?:[0-9] ?){10,14}$/;
    
        }
        return reg.test(s);
    }
    Но почему - то условие else не срабатывает, работает только первое условие с 10 цифрами в поле. Можно ли вообще использовать переменную с regex в if/else?
     
  2. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    121
    Симпатии:
    44
    Полный код в студию.
     
  3. Myles

    Myles Создатель

    Регистр.:
    11 июн 2015
    Сообщения:
    30
    Симпатии:
    1
    Там слишком много лишнего кода, приведу основной, который относится к данной проблеме

    Код:
    function validatePhoneNumber(s)
    {
        var reg;
        if ($('div').hasClass("opt216")) {
            reg = /^\+(?:[0-9] ?){10}$/;
        }else  if ($('div').hasClass("opt177")) {
            reg = /^\+(?:[0-9] ?){10,14}$/;
        }
        return reg.test(s);
    }
    Код:
    $('input[name="payment_address[phone_mobile]"]').on('blur', function () {
                if ($(this).siblings('.supercheckout-required').css('display') == "none" && $(this).val() == '')
                {
                    $(this).removeClass('ok-form error-form');
                } else if ($(this).val() == '') {
                    $(this).removeClass('ok-form').addClass('error-form');
                    $(this).parent().append('<span class="errorsmall">' + required_error + '</span>');
                } else if (!validatePhoneNumber($(this).val()))
                {
                    $(this).removeClass('ok-form').addClass('error-form');
                    $(this).parent().append('<span class="errorsmall">' + invalid_number + '</span>');
                } else if (validatePhoneNumber($(this).val()))
                {
                    $(this).removeClass('error-form').addClass('ok-form');
                }
            });
     
  4. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    121
    Симпатии:
    44
    нужен полный код страницы, а не функции...
     
  5. Myles

    Myles Создатель

    Регистр.:
    11 июн 2015
    Сообщения:
    30
    Симпатии:
    1
    могу я просто дать ссылку на сайт и описать функционал, который не работает?
     
  6. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    121
    Симпатии:
    44
    Давайте.
     
  7. Myles

    Myles Создатель

    Регистр.:
    11 июн 2015
    Сообщения:
    30
    Симпатии:
    1
    http://testvideo.alunika.com добавляете товар в корзину, переходите в корзину, где выбираете номер телефона. Сейчас прописал, чтобы при выборе в графе телефона Украины - было 10 знаков, при выборе, например, России, от 10 до 14 знаков. Но валидация телефонного поля при этом всё равно ограничена только 10 знаками.
     
  8. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    121
    Симпатии:
    44
    Вы точно дали правильную ссылку ?
    Я не вижу что там можно добавить в корзину и где вообще там корзина.
     
  9. Myles

    Myles Создатель

    Регистр.:
    11 июн 2015
    Сообщения:
    30
    Симпатии:
    1
    уже исправил, извиняюсь
     
  10. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    121
    Симпатии:
    44
    Еще такой вопрос, в каком файле находятся js функции ?