2014-02-07 99 views
-1

我有一個嵌套的foreach循環,我只想激活隱藏的輸入,只有當複選框被激活。我幾乎擁有它,如果我點擊複選框,則正確的輸入會激活,但如果我取消選中,則無法停用。使用jQuery使複選框啓用多個隱藏字段

這裏是循環;

{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 =文本。仍然是Javascript的初學者,所以任何幫助調試都會很棒!

回答

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()
+0

這工作完美,我可以理解發生了什麼 - 贏贏 – tcnjdeluca

0

我想你正在尋找的是

$(document).ready(function() { 
    $('.input_control').click(function() { 
     $('input.' + this.value).prop('disabled', !this.checked) 
    }); 
}); 
  • 使用類選擇,以獲得輸入元素
  • 使用.prop()來設置禁用狀態
  • 使用複選框的選中狀態設置禁用狀態(如果複選框被選中,則t他輸入字段啓用)
+0

這個作品,謝謝! – tcnjdeluca