我有一个嵌套的foreach循环,我只想在激活复选框时激活隐藏的输入。我几乎拥有它,如果我单击复选框,则会激活正确的输入,但如果取消选中则无法取消激活。
这是循环;
{foreach $order as $pickup}
<ul>
<li><input type="checkbox" class="input_control" value="{$pickup.order_number}"/>
ORDER #{$pickup.order_number} Sold to {$pickup.first_name} {$pickup.last_name} (${$pickup.order_total|string_format:"%.2f"})
<ul> {foreach $order_products as $products}{if $products.order_number == $pickup.order_number}
<li><input type="hidden" name="index_val[]" class="{$products.order_number}" disabled/>{$products.item_name} x's{$products.quant}</li>
{/if}{/foreach}
</ul>
</li>
</ul>{/foreach}
这是javascript
$(document).ready(function(){
$('.input_control').click(function(){
if($('input[class='+ $(this).attr('value')+']').attr('disabled') == false){
$('input[class='+ $(this).attr('value')+']').attr('disabled', true);
}else{
$('input[class='+ $(this).attr('value')+']').attr('disabled', false);
}
});
});
出于测试目的,我将hiddens转为type = text。仍然是Javascript的初学者,所以任何帮助调试都会很棒!
答案 0 :(得分:0)
试试这个,
$(document).ready(function(){
$('.input_control').click(function(){
if(!$('input.'+ $(this).attr('value')).prop('disabled')){
$('input.'+ $(this).attr('value')).prop('disabled', true);
}else{
$('input.'+ $(this).attr('value')).prop('disabled', false);
}
});
});
.prop()
代替.val()
答案 1 :(得分:0)
我认为你在寻找的是
$(document).ready(function () {
$('.input_control').click(function () {
$('input.' + this.value).prop('disabled', !this.checked)
});
});