Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Для тех кто любит простые сложные задачи (https://javascript.ru/forum/dom-window/28444-dlya-tekh-kto-lyubit-prostye-slozhnye-zadachi.html)

dmonco 19.05.2012 23:59

Для тех кто любит простые сложные задачи
 
Есть html код
<fieldset>
<input type="radio" name="virtuemart_paymentmethod_id" id="payment_id_3"   value="3" checked="checked">
<input type="radio" name="jl_payment_methods" style="display:none" value="ACC" id="jl_payment_methods_All Credit Card (internationally)"/>
<input type="radio" name="virtuemart_paymentmethod_id" id="payment_id_6"   value="6" >
<input type="radio" name="jl_payment_methods" style="display:none" value="VSA" id="jl_payment_methods_VISA Card (internationally)"/>
<input type="radio" name="virtuemart_paymentmethod_id" id="payment_id_7"   value="7" >
<input type="radio" name="jl_payment_methods" style="display:none" value="ewallet" id="jl_payment_methods_Ewallet"/>
<input type="radio" name="jl_payment_methods" style="display:none" value="MAE" id="jl_payment_methods_Maestro (UK Spain Autria)"/>
</fieldset>

Сразу говорю, где он находится, хрен его знает. Выводится с помощью такой конструкции:
<?php
     if ($this->found_payment_method) {


    echo "<fieldset>";
		foreach ($this->paymentplugins_payments as $paymentplugin_payments) {
		    if (is_array($paymentplugin_payments)) {
				foreach ($paymentplugin_payments as $paymentplugin_payment) {
			    echo $paymentplugin_payment.'<br />';
				}
		    }
		}
    echo "</fieldset>";

    } else {
	 echo "<h1>".$this->payment_not_found_text."</h1>";
    }

    ?>

Как видите в html есть radio buttons - три выбора. Под каждым выбором есть дополнительный radio c style="display:none"
Нужно чтобы при нажатии активировался соответствующий с style="display:none"

Вариант 1.
Мне кажется надо сначала удалить style="display:none" и добавить type hidden, остается вопрос, как связать нажатый radio c input hidden.

Вариант 2.
Чтобы не заморачиваться. Сейчас видно, что у каждого radio свой value, например, value="3"
Сделать проверку, какой radio выбран, взять его значение и сравнить. Если значение к примеру равняется ==3, то добавляем ещё одну строку input hidden value="ACC"
ACC - это вид платежа.
Перед <form> добавил этот код, но он почему-то не работает.
<script src="jquery.js" type="text/javascript"></script>
	<script type="text/javascript">
	$(document).ready(function(){	
$('input[type="radio"]').click(function(e) {
	
	var id = $(this).val();

if (id==3) 
{	
	$('input[type=radio][value=ACC]').attr('checked', 'checked');
}

if (id==6) 
{
	$('input[type=radio][value=VSA]').attr('checked', 'checked');
}

if (id==7)
{
	$('input[type=radio][value=ewallet]').attr('checked', 'checked');
}

});});
</script>

розовый слоник 22.05.2012 16:39

Цитата:

Перед <form> добавил этот код, но он почему-то не работает.
возможно проблема из за того что вы вставели код перед самими радио батонами, но я не буду утверждать так как не помню как сейчас реализована функция "ready" в jQuery.

Deff 26.05.2012 10:04

<fieldset>
<input type="radio" name="virtuemart_paymentmethod_id" id="payment_id_3"   value="3" checked="checked">
<input type="radio" name="jl_payment_methods" style="display:none" value="ACC" id="jl_payment_methods_All Credit Card (internationally)"/>
<input type="radio" name="virtuemart_paymentmethod_id" id="payment_id_6"   value="6" >
<input type="radio" name="jl_payment_methods" style="display:none" value="VSA" id="jl_payment_methods_VISA Card (internationally)"/>
<input type="radio" name="virtuemart_paymentmethod_id" id="payment_id_7"   value="7" >
<input type="radio" name="jl_payment_methods" style="display:none" value="ewallet" id="jl_payment_methods_Ewallet"/>
<input type="radio" name="jl_payment_methods" style="display:none" value="MAE" id="jl_payment_methods_Maestro (UK Spain Autria)"/>
</fieldset>


<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){

  $('input[type="radio"]').click(function(e) {
 var inPArr=[3,'ACC',6,'VSA',7,'ewallet']
	var id = $(this).val();
    for(var i=0; i<inPArr.length; i+=2){
      if(id==inPArr[i]){//alert(inPArr[i+1])
        $("input[value='"+inPArr[i+1]+"']").attr('checked','checked');
      break;
      }
    }
 });

});
</script>


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