Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Скрыть поле по выбору радиобаттон (https://javascript.ru/forum/dom-window/58348-skryt-pole-po-vyboru-radiobatton.html)

sashgera 16.09.2015 23:26

Скрыть поле по выбору радиобаттон
 
Здравствуйте
В оформлении заказа нужно скрыть поле "Номер паспорта", если выбрать радиобаттон "Доставка по Москве".
На отдельной страничке все работает: http://www.glassbus.ru/Untitled-4.php
Но на самом сайте JS упорно не хочет скрывать это поле. Возможно, есть конфликт джаваскриптов - Вариант доставки и Способ оплаты зависимы друг от друга.

Здесь тестирую (нажмите кнопку Купить и перейдете в оформлении заказа): http://www.glassbus.ru/test/vm.html?page=shop.product_details&product_id=2&cat egory_id=1&flypage=flypage.tpl
Пожалуйста, помогите
Вот JS:
<script type="text/javascript">
var inp = document.getElementsByName('shipping_rate_id');
var fax_txt = document.getElementById('vm_pasport_div');
var fax_inp = document.getElementById('vm_pasport_input');
function func (elm) {
    if (elm.id == "hasha917f3643fcc7141bc83f55fb83a6c62" && elm.checked){
       fax_txt.style.display = "none";
       fax_inp.style.display = "none";
    }else{
       fax_txt.style.display = "";   
       fax_inp.style.display = "";
    }
}
      
for (var i=0;i<inp.length;i++){
   inp[i].onchange = function () {func(this)};
}   
</script>

Lemme 16.09.2015 23:57

Вы б лучше консолью пользовались, тогда б вопросы не возникали.

Это что такое?
function getPaymentId()
	 {
	  return getValueOfSPaymentMethod();
	   var radioObj = document.getElementsByName("payment_method_id");
	   if (!radioObj) return "";
	   var radioL = radioObj.length;
	   if (radioL == undefined)
	    if (radioObj.checked) return radioObj.value;
	    else return "";
	   for (var i=0; i< radioL; i++)
	   if (radioObj[i].checked) { return radioObj[i].value; }
	   /*
	   if (radioObj.length == 1)
	   {
	    if (radioObj[0].type == 'hidden') return radioObj[0].value;
	    
	   }
	   */
	   return "";
	 }

sashgera 17.09.2015 00:22

Lemme, у меня сайт на joomla, установил компонент One Page Checkout (оформление заказа virtuemart на одной странице)
Функция getPaymentId из этого компонента. Что в ней не так, я не знаю. Если можете - помогите.

Lemme 17.09.2015 00:43

Дело в том, что после 3й строки - код никогда не отработает.... Но не суть.

Код должен выглядеть примерно так, все остальные нюансы уже поправите сами.
var cb = document.getElementById('hasha917f3643fcc7141bc83f55fb83a6c62'), // passport radio button
	fd = document.getElementById('vm_pasport_field'); // passport field

cb.onchange = function() {
	if (this.checked) {
		fd.style.display = 'none';
	}
	else {
		fd.style.display = 'block';
	}
}

sashgera 17.09.2015 01:11

Lemme, применил ваш JS, поле с паспортом все равно не скрывается..

Lemme 17.09.2015 01:41

sashgera, не знаю, куда вы его применили, но у меня скрывает (криво), не все, но скрывает.

<iframe width="560" height="315" src="https://www.youtube.com/embed/SBlWkb-Vpqg" frameborder="0" allowfullscreen></iframe>

sashgera 17.09.2015 02:07

Lemme, JS разместил в шаблоне компонента
components/com_virtuemart/themes/default/templates/onepage/onepage.unlogged.tpl.php

sashgera 17.09.2015 03:22

скрыть поле не получается :help:

sashgera 17.09.2015 21:01

Цитата:

Сообщение от Lemme
sashgera, не знаю, куда вы его применили, но у меня скрывает (криво), не все, но скрывает.

Lemme, пожалуйста, подскажите где вставить ваш JS. Я пробовал в файлах компонента One Page Checkout, Virtuemart - ваш js поле не скрывает.

Lemme 17.09.2015 21:20

sashgera, не представляю, ибо никаких ошибок нет. Кроме
SyntaxError: unreachable code after return statement
, но вы говорите, что это не ваш код.

Смотрите, у в вашей форме есть radio button
Цитата:

Банковский перевод на расчетный счет - КОМИССИЯ 10% (+ 10%)
если ее выбрать, то появляется комиссия
Цитата:

Комиссия 160 руб.
Смотрите на то, как она реализована и сделайте подобное с паспортом.


Часовой пояс GMT +3, время: 06:37.