Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не добавляется атрибут checked (https://javascript.ru/forum/jquery/56455-ne-dobavlyaetsya-atribut-checked.html)

Takasu 17.06.2015 03:44

Не добавляется атрибут checked
 
Доброго времени суток, дорогие жители форума. Нужна ваша помощь.
Собственно сабж: Делаю магазин на OpenCart, страница оформления заказа (стоит модуль упрощенного оформления заказа).
Есть 2 псевдо выпадающих списка
<div class="order_list_delivery order_list order_input">
	<div class="delivey_title">Форма доставки</div>
	<img src="catalog/view/theme/default/img/arrow_list.png" alt="" class="arrow_list"/>
	<div class="choose">
		<div id="ordervalone" class="order_input delivey">Новая почта</div>
		<div id="ordervaltoo" class="order_input delivey">Самовывоз з офиса по Киеву</div>
		<div id="ordervalthree" class="order_input delivey">Куръерская доставка по Киеву</div>
	</div> 
</div>
<div class="order_list_pay order_list order_input">
	<div class="pay_title">Форма оплаты</div>
	<img src="catalog/view/theme/default/img/arrow_list.png" alt="" class="arrow_list"/>
	<div class="choose">
		<div id="orderlistone" class="order_input pay">Наличными курьеру</div>
		<div id="orderlisttoo" class="order_input pay">Наложенным платежом</div>
	</div>                
</div>

Есть стандартные чекбоксы
<div class="shipping-content" style="display: block">
	<?php if(count($shipping_methods) > 1) { ?>
	<p><?php echo $text_shipping_method; ?></p>
	<table class="form">
		<?php foreach($shipping_methods as $shipping_method) { ?>

		<?php if(!$shipping_method['error']) { ?>
			<?php foreach($shipping_method['quote'] as $quote) { ?>
				<tr>
					<td style="width: 1px;"><?php if($quote['code'] == $shipping_code || !$shipping_code) { ?>
						<?php $shipping_code = $quote['code']; ?>
						<input type="radio" name="shipping_method"
							   value="<?php echo $quote['code']; ?>"
							   id="<?php echo $quote['code']; ?>"
							   class="shippinghk"/>
						<?php } else { ?>
						<input type="radio" name="shipping_method"
							   value="<?php echo $quote['code']; ?>"
							   id="<?php echo $quote['code']; ?>"
							   class="shippinghk"/>
						<?php } ?></td>
					<td><label
							for="<?php echo $quote['code']; ?>"><?php echo $quote['title']; ?></label>
					</td>
				</tr>
				<?php } ?>
			<?php } else { ?>
			<tr>
				<td colspan="3">
					<div class="error"><?php echo $shipping_method['error']; ?></div>
				</td>
			</tr>
			<?php } ?>
		<?php } ?>
	</table>
	<?php } else if ($shipping_methods) { ?>
	<?php $shipping_method = array_shift($shipping_methods);?>
		<p><?php echo $text_shipping_method; ?></p>
	<table class="form">
		<tr>
			<td colspan="3"><b><?php echo $shipping_method['title']; ?></b></td>
		<?php foreach($shipping_method['quote'] as $quote) { ?>
			<td><label><?php echo $quote['title']; ?></label></td>
			<td style="text-align: right;"><label><?php echo $quote['text']; ?></label></td>
		<?php }?>
		</tr>
		</table>
	<?php } else { ?>
	
	<?php }?>
</div>

И чекбоксы оплаты (код находиться в отдельном файле)
<?php if($payment_methods) { ?>
<p><?php echo $text_payment_method; ?></p>
<table class="radio">
	<?php foreach($payment_methods as $payment_method) { ?>
	<tr class="highlight">
		<td><?php if($payment_method['code'] == $payment_code || !$payment_code) { ?>
			<?php $code = $payment_method['code']; ?>
			<input type="radio" name="payment_method" value="<?php echo $payment_method['code']; ?>" id="<?php echo $payment_method['code']; ?>" class="paymenthk"/>
			<?php } else { ?>
			<input type="radio" name="payment_method" value="<?php echo $payment_method['code']; ?>" id="<?php echo $payment_method['code']; ?>" class="paymenthk" checked="checked"/>
			<?php } ?></td>
		<td><label for="<?php echo $payment_method['code']; ?>"><?php echo $payment_method['title']; ?></label></td>
	</tr>
	<?php } ?>
</table>
<br/>
<?php } ?>

<div class="payment">
	<?php echo $payment?>
</div>

Соединяется все это jQuery
$(document).ready(function() {
    $('#ordervalone').click(function(){
		$("input[name=shipping_method]").prop("checked", false);
		$(".shippinghk").eq(0).attr("checked",true);
    });
    $('#ordervaltoo').click(function(){
		$("input[name=shipping_method]").prop("checked", false);
		$(".shippinghk").eq(1).attr("checked",true);
    });
    $('#ordervalthree').click(function(){
		$("input[name=shipping_method]").prop("checked", false);
		$(".shippinghk").eq(2).attr("checked",true);
    });
    $('#orderlistone').click(function(){
		$("input[name=payment_method]").prop("checked", false);
		$(".paymenthk").eq(0).attr("checked",true);
    });
    $('#orderlisttoo').click(function(){
		$("input[name=payment_method]").prop("checked", false);
		$(".paymenthk").eq(0).attr("checked",true);
    });
});

А теперь к сути, форма доставки работает как нужно.
Форма оплаты, визуально выделят чекбокс, но вне зависимости от выбора, в заказ передается "Наличными курьеру"..
Есть идеи почему первый блок работает, а второй нет?!

Deff 18.06.2015 02:57

Takasu,
У Вас кривой формат записи селекторов:
$("input[name=shipping_method]")
Нуно так:
$("input[name='shipping_method']")

Takasu 19.06.2015 16:31

Не помогает :(

Deff 19.06.2015 21:40

Takasu,
Дайте ссылку на тестовую онлайн страницу

Takasu 20.06.2015 14:32

http://takasu.pp.ua/index.php?route=checkout/checkout

Deff 20.06.2015 17:43

Takasu,
Ошибка в скрипте ниже
$('input[name="payment_method"]').live('change', function() {
		$(".checkout-product").mask();
		$.ajax({
			url: 'index.php?route=checkout/checkout/change_payment',
			type: 'post',
			data: 'payment_code='+$("input[name='payment_method']:checked").val(),
			dataType: 'json',
			success: function(json) {
				 if (json.payment){
					 $(".payment").html(json.payment);
				 }
				 $(".checkout-product").unmask();
			}
		});
	});

Опять же с кавыками

Имхо есть и еще подобные ошибки в иной секции инпутов

Takasu 22.06.2015 00:47

Deff,
Нет, дело даже не в этом.

Deff 22.06.2015 01:27

Takasu,
Ни наю, удаляю данный скрипт со страницы - состояние чекитов - отображается

Takasu 22.06.2015 06:06

Deff,
А у меня все по старому)


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