使用jquery启用带有复选框的多个隐藏字段

时间:2014-02-07 03:50:39

标签: jquery checkbox smarty

我有一个嵌套的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的初学者,所以任何帮助调试都会很棒!

2 个答案:

答案 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);    
        }
    });
});
  1. 您可以使用类选择器来简化代码。
  2. 使用.prop()代替.val()

答案 1 :(得分:0)

我认为你在寻找的是

$(document).ready(function () {
    $('.input_control').click(function () {
        $('input.' + this.value).prop('disabled', !this.checked)
    });
});
  • 使用类选择器获取输入元素
  • 使用.prop()设置禁用状态
  • 使用复选框的选中状态设置禁用状态(如果选中复选框,则启用输入字段)
相关问题