Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Скрыть поля input в зависимости от другого поля


Twix87

Recommended Posts

Добрый день.

Помогите составить js код. Нужно, чтобы остались только поле страна и регион при выборе Российская Федерация. А остальные поля скрывать так:

document.getElementsByClassName('form-group required row-shipping_address_city')[0].style.visibility = 'hidden';
document.getElementsByClassName('form-group required row-shipping_address_address_1')[0].style.visibility = 'hidden';
document.getElementsByClassName('form-group required row-shipping_address_postcode')[0].style.visibility = 'hidden';

Соответственно, если value не 176, то эти поля должны отображаться.

HTML:

<select class="form-control" name="shipping_address[country_id]" id="shipping_address_country_id"
                      <option value=""> --- Выберите --- </option>
                      <option value="20">Белоруссия (Беларусь)</option>
                      <option value="109">Казахстан</option>
                      <option value="115">Киргизия (Кыргызстан)</option>
                      <option value="176" selected="selected">Российская Федерация</option>
                      <option value="226">Узбекистан</option>
</select>

<input class="form-control suggestions-input" type="text" name="shipping_address[city]" id="shipping_address_city" value="";>
<input class="form-control suggestions-input" type="text" name="shipping_address[address_1]" id="shipping_address_address_1" value="";>
<input class="form-control suggestions-input" type="text" name="shipping_address[postcode]" id="shipping_address_postcode" value="";>

JS буду вставлять в simple.

Спасибо.

Надіслати
Поділитися на інших сайтах


11 часов назад, Vetroff сказал:

a разве стандартными средствами Simple этого сделать нельзя?

 

10 часов назад, anboza сказал:

может, просто ТС скучно ))

:-DВсем привет. Дело в том, что симпла скрывает поля <input type="hidden">. В таком случае, скрипт dadata, не может подставить адрес в эти поля и значения на сервер не передаются. А если скрывать visibility = 'hidden', то все работает. По этому и возник такой вопрос.
Может тогда можно js научить подставлять значения в <input type="hidden">?

Надіслати
Поділитися на інших сайтах


25 минут назад, Twix87 сказал:

 

Всем привет. Дело в том, что симпла скрывает поля <input type="hidden">. В таком случае, скрипт dadata, не может подставить адрес в эти поля и значения на сервер не передаются. А если скрывать visibility = 'hidden', то все работает. По этому и возник такой вопрос.
Может тогда можно js научить подставлять значения в <input type="hidden">?

а что мешает взять простой change на jquery и от него отталкиваться? 

Надіслати
Поділитися на інших сайтах


1 час назад, prived сказал:

а что мешает взять простой change на jquery и от него отталкиваться? 

Вот в этом и вопрос. Я два дня пытался, искал похожие решения, но ничего не работает.

$(document).ready(function() {
 $('#shipping_address_country_id').change(function() {
  if($(this).val() === "176")
   {
$("#shipping_address_city").style.visibility = 'hidden';
   }
else
   {
$("#shipping_address_city").css("display", "block");
   }
 });
});

Что то типа этого, пытался сделать.

Надіслати
Поділитися на інших сайтах


1 час назад, Twix87 сказал:

Вот в этом и вопрос. Я два дня пытался, искал похожие решения, но ничего не работает.


$(document).ready(function() {
 $('#shipping_address_country_id').change(function() {
  if($(this).val() === "176")
   {
$("#shipping_address_city").style.visibility = 'hidden';
   }
else
   {
$("#shipping_address_city").css("display", "block");
   }
 });
});

Что то типа этого, пытался сделать.

я думаю что нужно использовать всегда on 

 

$('тра ля ля').on('change',function(){});

и писать 2 равно будет достаточно 

 

для начала просто напишите change  и выводите в консоль 'работает'

потом пробуйте условия выводить 

а потом все вместе

 

ссылку оставьте

  • +1 1
Надіслати
Поділитися на інших сайтах


1 час назад, Vetroff сказал:

 

да это то же самое. 

 

Для Вас может быть и тоже самое. С опытом прийдет

Только click change и тд не работает с динамически добавленными элементами а on('click') работает и при этом имеет меньшее потребление памяти 

 

еще для отслеживания элемента можно использовать вот такую форму 

$('input').bind("DOMSubtreeModified",function(){});

 

Надіслати
Поділитися на інших сайтах


Суть в том что click создает отдельный обработчик событий а on - 1 обработчик для каждый on('change') on('click') ну вы поняли ) 

Надіслати
Поділитися на інших сайтах


2 часа назад, Vetroff сказал:

$("#shipping_address_city").hide();
$("#shipping_address_city").show();

 

Мне надо visibility = 'hidden'; как через js добавить? 

В style="display: none; скрипт не может вставить значение.

Надіслати
Поділитися на інших сайтах


https://jsfiddle.net/twix87/95r26z8e/39/

 

Сделал так. Есть проблемка. Страна Россия стоит по умолчанию и нужно это учитывать при загрузке. Сейчас js это не делает и поля видны после загрузки.

Надіслати
Поділитися на інших сайтах


1 час назад, Vetroff сказал:

значит нужно реагировать не только по on change а и сразу по загрузке.

Я извиняюсь, но как?:oops:

Надіслати
Поділитися на інших сайтах


2 часа назад, Twix87 сказал:

Я извиняюсь, но как?:oops:

 

например, так 

 

function hide_fields() {
  if($('#shipping_address_country_id').val() == "176") $("#shipping_address_city, #shipping_address_address_1, #shipping_address_postcode").css('visibility', 'hidden');
  else $("#shipping_address_city, #shipping_address_address_1, #shipping_address_postcode").css('visibility', 'visible');
}

$(document).ready(function() {  
 hide_fields(); 
 $('#shipping_address_country_id').on('change',function() {
 hide_fields();
});
});

 

  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.