2015-04-13 44 views
2

我正在尝试做一些事情。我有下面的代码片段:关联一个复选框与另一个输入

echo "<form class='additionals'>";    
foreach($connection->query($sql2) as $additional) 
{ 
    echo "<input class='additional-checkbox' type='checkbox' name='additional_id' 
      value='{$additional['additional_id']}'/> 
     {$additional['additional_name']} - &#36;{$additional['additional_price']} 
     <input type='number' name='additional_quantity' value='1' min='1' max='5'/> 
     <br/>"; 
} 
echo "</form>"; 

时不会检查与名称additional_id任何复选框,我需要的是,与有关其数量的名字additional_quantity在它前面输入被禁用,反之亦然。但我不知道该怎么做,甚至更多,因为我需要使用foreach。我可以用jQuery来做到这一点吗?

+0

做你的复选框始终启动出去选中? – DelightedD0D

+0

@ DelightedD0D是的。我认为当页面加载时,我需要一个禁用数量输入的代码。 – Dyan

回答

1

这将你需要的东西:

  • 注意,我给复选框类enable
  • 我还添加了disabled财产实际HTML的输入,你需要在添加此你的PHP代码
  • 我也给每一个输入一个独特的name如果你允许多个领域,将提交表单,他们都将需要唯一的名称

$('.enable').change(function(){ 
 
    var set = $(this).is(':checked') ? false : true;  // ternary operator to test if the changed checkbox is now checked 
 
    $(this).nextAll('input').first().attr('disabled',set); // find the next input and set it's disabled property according to the previous check 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form class='additionals'> 
 
    <input class='additional-checkbox enable' type='checkbox' name='additional_id1' value='somevalue' />somevalue 
 
    <input type='number' name='additional_quantity1' value='1' min='1' max='5' disabled/> 
 
    <br/> 
 
    <input class='additional-checkbox enable' type='checkbox' name='additional_id2' value='somevalue' />somevalue 
 
    <input type='number' name='additional_quantity2' value='1' min='1' max='5' disabled/> 
 
    <br/> 
 
    <input class='additional-checkbox enable' type='checkbox' name='additional_id3' value='somevalue' />somevalue 
 
    <input type='number' name='additional_quantity3' value='1' min='1' max='5' disabled/> 
 
    <br/> 
 
    <input class='additional-checkbox enable' type='checkbox' name='additional_id4' value='somevalue' />somevalue 
 
    <input type='number' name='additional_quantity4' value='1' min='1' max='5' disabled/> 
 
    <br/> 
 
    <input class='additional-checkbox enable' type='checkbox' name='additional_id5' value='somevalue' />somevalue 
 
    <input type='number' name='additional_quantity5' value='1' min='1' max='5' disabled/> 
 
    <br/> 
 
</form>

+0

谢谢你的回答!我想我不需要为复选框使用不同的名称,因为我正在使用'.serialize form'。我需要禁用未选中复选框的数量输入,因为在序列化表单时,未选中复选框的数量输入也包含在内。 我在代码中发现的唯一问题是数量输入仅在单击时被禁用。当页面加载时也需要禁用它们。 – Dyan

+1

对不起,我应该说我还在输入中添加了“禁用”属性,这样他们就开始禁用了,只有当你点击前面的复选框 – DelightedD0D

+0

我才看到它。奇怪的是,在我的代码中,它们在页面加载时启用。也许是因为我需要为他们每个人使用一个独特的名字? – Dyan

相关问题