приветствую. ковыряю модуль Simple. требуется следующее: если не заполнены данные в полях в блоке "покупатель и адрес доставки" не показывать блоки "варианты доставки" и "варианты оплаты" есть такой уже готовый скрипт скрывающий блок "варианты оплаты" пока не выбран "вариант доставки" if ($('[name=shipping_method]:checked').length) { $('#simplecheckout_payment').show() } else { $('#simplecheckout_payment').hide() } тут идёт проверка на активацию radio кнопки чтоб скрыть предыдущий блок, надо в такой же скрипт вложить проверку заполненности текстового поля пробовал, менял... не получается знающие, подскажите пожалуйста заранее спасибо
не кодер я :о) пробовал по аналогии с работающим скриптом (тем, что в посте) пытаюсь получить следующее: 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() } первое не работает, второе работает
И не должно! Я первый раз вижу псевдоселектор :true - его не существует. Если это текстовый инпут и вы хотите проверить заполнен ли он, то нужно просто проверить его value. Код: if ($('[name=customer[telephone]]').val()) {
мой косяк, не то скопировал... правда и у меня было написано value()) {, а не val()) { но почему то скрывать то скрывает, а обратно, при заполнении поля, не появляется нужный блок...
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() } если оставить только вторую часть кода, то блок формы оплаты появляется после выбора метода доставки если оставить весь код, то да, блоки доставки и оплаты скрываются, но после заполнения поля телефон, они не появляются... простите, за моё невежество... :о)
Вот с этого и надо было начинать. Я не знаю, по какому событию там должен выполняться код, но проблема явно в этом. Нужно пооборачивать ваши условия в слушатели событий. 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();}}); Из текущего кода к телефону привязана только доставка, а оплата привязана к выбору метода доставки.