2014-09-06 66 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