通过复选框启用和禁用textBoxes数组

时间:2012-04-10 00:11:00

标签: php javascript checkbox textbox

我一直在研究这段代码! 我做得不对。

我想要的是在选中相应的复选框时启用的文本框。 但是当应用函数时没有任何反应:(

在我的代码中,文本和复选框是使用php从数据库动态生成的。 这是我的代码:

<div><div class="ac-container">

<div id="accordion">

<?php

$qry="SELECT * FROM catalog";
$result= mysql_query($qry);
if($result){
while($info = mysql_fetch_array($result))
{

print "<h3><a href=\"\#\"> cat:".$info['name']."</a></h3><div>";

$qryitem="SELECT * FROM item WHERE Id=". $info['Cid'];
$resultitem=mysql_query($qryitem);
if($resultitem){

?>

<form name="form1" id="form" method="post" action="manage_item_action.php"  >
<?php
while($info=mysql_fetch_array($resultitem))
{
?>
<input type="checkbox"  id="checkB" name="op[]" value="<?php echo $info['Id'];?>" />   <?php echo $info['name'];?>
<label> Quantity <input disabled="disabled" id="textB" type="text" 
name="Quantit[]" value="<?php echo $info['Quantity'];?>"/>
</label>
<script>



 checkBoxes=document.form1.elements['op[]'];
 textBoxes=document.form1.elements['Quantit[]'];
 for(var i=0 ; i<checkBoxes.length;i++){
 checkBoxes[i].onchange = function() {
 textBoxes[i].disabled =!(this.checked);};


 }

 </script>



<br/>

        <?php
        } 
    }


 else echo "There are no items.";

 print "</div>";



}
}


?>

</div>

<input type="submit" value="update" name="submit"/>
<input type=reset value="clear"></td></tr> </form>

1 个答案:

答案 0 :(得分:0)

您遇到的问题是在事件处理程序中未定义变量i。要解决此问题,您可以为每个复选框添加一个属性,以保存它们所指的索引:

checkBoxes=document.form1.elements['op[]'];
textBoxes=document.form1.elements['Quantit[]'];
for(var i=0 ; i<checkBoxes.length;i++)
{
    checkBoxes[i].myIndex = i;
    checkBoxes[i].onchange = function() {
        textBoxes[this.myIndex].disabled =!(this.checked);
    };
}

解决此问题的其他方法:http://www.howtocreate.co.uk/referencedvariables.html

你的代码仍然很混乱。例如,您使用第一个<div/>语句生成了太多关闭print - 标记。我建议你从你的问题中删除PHP代码,因为问题只与html和javascript有关。

我还建议使用库来操作像jQuery这样的DOM元素。

编写和调试javascript时,应始终确保收到错误消息。 “没有任何反应”表明你只是在忽视错误。对于Firefox,请下载插件Firebug。 Safari还具有可在设置中激活的开发人员工具。使用这些工具可以很容易地发现和解决这样的问题。