Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Что делаю не так? Javascript + Radio button + Input (https://javascript.ru/forum/dom-window/28428-chto-delayu-ne-tak-javascript-radio-button-input.html)

dmonco 19.05.2012 06:43

Что делаю не так? Javascript + Radio button + Input
 
При оформлении заказа в магазине на шаге выбора платежей имеется несколько radio button для выбора платежной системы. В зависимости от того, какая будет выбрана платежная система, будет добавляться её соответствующий код.
<input type="radio" name="virtuemart_paymentmethod_id" id="payment_id_3"   value="3" checked="checked">
<input type="radio" name="virtuemart_paymentmethod_id" id="payment_id_6"   value="6">
<input type="radio" name="virtuemart_paymentmethod_id" id="payment_id_7"   value="7">

Для проверки выбора radio button использую такой скрипт:
<script type="text/javascript">
var radios = document.getElementsByTagName('input');
var value;
for (var i = 0; i < radios.length; i++) {
    if (radios[i].type === 'radio' && radios[i].checked && radios[i].name === 'virtuemart_paymentmethod_id') {
        // alert(value = radios[i].value);
		if (value = radios[i].value==3)
		{
			//--></script>
<input type="hidden" name="jl_payment_methods" value="ACC" />
      <script type="text/javascript">
		}
		if (value = radios[i].value==6)
		{
			//--></script>
<input type="hidden" name="jl_payment_methods" value="VSA" />
      <script type="text/javascript">
	    if (value = radios[i].value==7)
		{
			//--></script>
<input type="hidden" name="jl_payment_methods" value="skrill" />
      <script type="text/javascript">
		}
		}
    }
}
</script>

Если убрать две последних проверки значения if 6 и 7, то сам кусок кода работает. Подскажите как исправить?

bot87 19.05.2012 09:23

1.Плохой код.Невозможно читать.
2.Комментарий в скрипте не нужно употреблять
//--></script>. Ушли те браузерЫ ,для которых они были нужны.
3.Зачем тебе столько много тегов скрипт??Все в один(в твоем случае).
4.Проверка
radios[i].type === 'radio' && radios[i].checked && radios[i].name === 'virtuemart_paymentmethod_id'
Намудрил.Зачем тебе проверка на radios[i].type === 'radio' и name === 'virtuemart_paymentmethod_id'.Если можно выбрать одно.У тебя же не будет других полей кроме этих радио-кнопок с таким именем.
5.Использовать проверку if() можно и так:
if(){
if(){
if(){
}else{}
}else{
}
}else{}
или использовать оператор switch

bes 19.05.2012 09:30

<div id="myDiv">
  <input type="radio" name="payment"   value="ACC">
  <input type="radio" name="payment"   value="VSA">
  <input type="radio" name="payment"   value="skrill">
</div>

<script>
function payment(e) {
  var e = e || event;
  var target = event.target || event.srcElement;
  var value = target.value;

  switch (value) {
    case 'ACC': {alert('код ' + value); break}
    case 'VSA': {alert('код ' + value); break}
    case 'skrill': {alert('код ' + value)}
  }
}


myDiv.onclick = payment;
</script>

dmonco 19.05.2012 16:22

Цитата:

Сообщение от bot87 (Сообщение 175369)
1.Плохой код.Невозможно читать.
2.Комментарий в скрипте не нужно употреблять
//--></script>. Ушли те браузерЫ ,для которых они были нужны.
3.Зачем тебе столько много тегов скрипт??Все в один(в твоем случае).
4.Проверка
radios[i].type === 'radio' && radios[i].checked && radios[i].name === 'virtuemart_paymentmethod_id'
Намудрил.Зачем тебе проверка на radios[i].type === 'radio' и name === 'virtuemart_paymentmethod_id'.Если можно выбрать одно.У тебя же не будет других полей кроме этих радио-кнопок с таким именем.
5.Использовать проверку if() можно и так:
if(){
if(){
if(){
}else{}
}else{
}
}else{}
или использовать оператор switch

А можно подробнее? Как будет выглядеть код целиком. Чё-то я опять намутил непонятно что. :help:


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