我一直在研究这段代码! 我做得不对。
我想要的是在选中相应的复选框时启用的文本框。 但是当应用函数时没有任何反应:(
在我的代码中,文本和复选框是使用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>
答案 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还具有可在设置中激活的开发人员工具。使用这些工具可以很容易地发现和解决这样的问题。