jQuery只从循环中获取第一个id值

时间:2014-09-06 13:46:06

标签: javascript php jquery forms

我的代码是:

<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>

问题是当选中复选框时,只会影响循环的第一行。我想在选中复选框时启用所有输入。

3 个答案:

答案 0 :(得分: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元素是您计划处理服务器端的表单元素,则需要对它们进行不同的命名,或者只分配最后指定的值。

答案 1 :(得分: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);
          }
     });
 });

答案 2 :(得分: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>
   ";