2014-09-06 67 views
1

我的代碼是:jQuery的從環獲得價值只有第一個ID

<input id='edit' type='checkbox' /> 

while($rs = mysql_fetch_array($query_fetch)) 
    {   
     echo "  
     <input type='text' name='qty' id='qty' value='".$sum[0]."' disabled> 
     "; 
    } 

<script> 
document.getElementById('edit').onchange = function() { 
    document.getElementById('qty').disabled = !this.checked; 
}; 
</script> 

的問題是,當選中該複選框只在循環的第一行生效。我希望當複選框被選中時,所有的輸入被啓用。

+1

看來要製作複製ID,請記住,ID必須是唯一的! – 2014-09-06 13:47:32

+0

我試着改變:document.getElementById('qty')。disabled =!this.checked;'to'document.getElementByTagName('input')。disabled =!this.checked;'但是也行不通。 – 2014-09-06 13:49:36

回答

1

要在jQuery的做到這一點,更改:

<input type='text' name='qty' id='qty' value='".$sum[0]."' disabled> 

收件人:

<input type='text' name='qty' class='qty' value='".$sum[0]."' disabled> 

,並添加以下代碼:

$('#edit').click(function() { 
    if ($(this).prop('checked')) { 
     $('.qty').prop('disabled', false); 
    } else { 
     $('.qty').prop('disabled', true); 
    } 
}); 

注:DOM對象ID應該是唯一的。沒有兩個元素應該具有相同的ID。您可以將相同的類分配給多個元素,並以這種方式在JavaScript中識別它們。另外,如果這些input元素是您計劃處理服務器端的表單元素,則需要對它們進行不同的命名,或者只有最後分配的值纔可用。

+0

這個工作。勾選複選框時,所有輸入都已啓用,但如果再次取消選中,則保持啓用狀態。 – 2014-09-06 14:33:34

+0

容易處理。查看更新的答案。 – 2014-09-06 14:39:20

+0

是的,我獨自一人:),非常感謝您的答案! – 2014-09-06 14:50:12

0

要在jQuery的做到這一點:

添加類條目的文本字段:

<input type='text' class='qty' name='qty' id='qty' value='".$sum[0]."' disabled> 

,然後使用jQuery的

$("#edit").click(function() { 
    $(".qty").each(function(index) { 
      if ($("#edit").is(':checked')) { 
       $(this).prop('disabled', false); 
      } else { 
       $(this).prop('disabled', true); 
      } 
    }); 
}); 
+0

我不確定這會有多好。作爲其中一個評論指出,所有的複選框被命名爲'qty' – Machavity 2014-09-06 13:56:21

+0

其實#qty是文本字段,並且他希望在檢查/取消選中時啓用/禁用所有#qty文本字段#edit複選框 – 2014-09-06 13:58:54

+0

也僅對第一個在循環中排。 – 2014-09-06 14:04:06

0

第一件事你不使用ID爲那麼多的元素... ID是每個元素唯一... 在這裏你可以使用class = qty。

你可以使用jQuery

$('.qty').eq(0).val(); 

仍然得到階級的價值觀,如果你想使用的ID,那麼你可以連接任何計數器變量(i)爲ID

echo "  
    <input type='text' name='qty"+i+"' id='qty' value='".$sum[0]."' disabled> 
    "; 
+0

對不起,我不是jquery的專家,不太瞭解你。 ().val();' – 2014-09-06 14:23:41

+0

$('。qty')表示它將所有元素選擇爲數組,例如擁有類qty和.eq(0)用於訪問該數組位置元素... – 2014-09-07 14:40:17