[Помогите] подкрутить Simple

Тема в разделе "OpenCart", создана пользователем sonicking, 30 апр 2017.

  1. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    приветствую.
    ковыряю модуль Simple.
    требуется следующее:
    если не заполнены данные в полях в блоке "покупатель и адрес доставки" не показывать блоки "варианты доставки" и "варианты оплаты"

    есть такой уже готовый скрипт скрывающий блок "варианты оплаты" пока не выбран "вариант доставки"

    if ($('[name=shipping_method]:checked').length) {
    $('#simplecheckout_payment').show()
    } else {
    $('#simplecheckout_payment').hide()
    }

    тут идёт проверка на активацию radio кнопки

    чтоб скрыть предыдущий блок, надо в такой же скрипт вложить проверку заполненности текстового поля

    пробовал, менял... не получается

    знающие, подскажите пожалуйста
    заранее спасибо
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Покажите код, который получился.
     
  3. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    не кодер я :о)
    пробовал по аналогии с работающим скриптом (тем, что в посте)
    пытаюсь получить следующее:

    1.если заполнено поле телефон, отображать блок simplecheckout_shipping

    if ($('[name=customer[telephone]]:true').length) {
    $('#simplecheckout_shipping').show()
    } else {
    $('#simplecheckout_shipping').hide()
    }

    2.если стоит радиокнопка в методе доставки shipping_method, отображать блок simplecheckout_payment

    if ($('[name=shipping_method]:checked').length) {
    $('#simplecheckout_payment').show()
    } else {
    $('#simplecheckout_payment').hide()
    }

    первое не работает, второе работает
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    И не должно! Я первый раз вижу псевдоселектор :true - его не существует.
    Если это текстовый инпут и вы хотите проверить заполнен ли он, то нужно просто проверить его value.
    Код:
    if ($('[name=customer[telephone]]').val()) {
     
    sonicking нравится это.
  5. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    мой косяк, не то скопировал... правда и у меня было написано value()) {, а не val()) {
    но почему то скрывать то скрывает, а обратно, при заполнении поля, не появляется нужный блок...
     
  6. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Всё-таки покажите ваш код.
     
  7. sonicking

    sonicking

    Регистрация:
    26 май 2013
    Сообщения:
    436
    Симпатии:
    114
    Dotrox, спасибо за Ваши консультации (и не только по этому вопросу)!
    немного не пойму, какой код Вы хотите увидеть.
    в Simple в админке есть пункт "Интеграция", там пункт "Джаваскрипты"
    вот туда я и вставляю код

    if ($('[name=customer[telephone]]').val()) {
    $('#simplecheckout_shipping').show()
    } else {
    $('#simplecheckout_shipping').hide()
    }

    if ($('[name=shipping_method]:checked').length) {
    $('#simplecheckout_payment').show()
    } else {
    $('#simplecheckout_payment').hide()
    }

    если оставить только вторую часть кода, то блок формы оплаты появляется после выбора метода доставки
    если оставить весь код, то да, блоки доставки и оплаты скрываются, но после заполнения поля телефон, они не появляются...

    простите, за моё невежество... :о)
     
  8. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Вот с этого и надо было начинать.
    Я не знаю, по какому событию там должен выполняться код, но проблема явно в этом. Нужно пооборачивать ваши условия в слушатели событий.
    PHP:
    $('#simplecheckout_shipping').hide();
    $(
    document).on('change''[name=customer[telephone]]', function(){
    if ($(
    '[name=customer[telephone]]').val()) {
    $(
    '#simplecheckout_shipping').show();
    } else {
    $(
    '#simplecheckout_shipping').hide();
    }
    });

    $(
    '#simplecheckout_payment').hide();
    $(
    document).on('change''[name=shipping_method]', function(){
    if ($(
    '[name=shipping_method]:checked').length) {
    $(
    '#simplecheckout_payment').show();
    } else {
    $(
    '#simplecheckout_payment').hide();
    }
    });


    Из текущего кода к телефону привязана только доставка, а оплата привязана к выбору метода доставки.