0

私はこのコードに取り組んでいます!そして、私はそれを正しく行うことができませんでした。

私が欲しいのは、対応するチェックボックスがチェックされているときにテキストボックスを有効にすることです。しかし、関数を適用しても何も起こりません:(

私のコードでは、テキストとチェックボックスは 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>
4

1 に答える 1

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ステートメントで終了タグが多すぎます。質問はhtmlとjavascriptにのみ関連しているため、質問からPHPコードを削除することをお勧めします。

jQueryのような DOM 要素を操作するためのライブラリを使用することもお勧めします。

JavaScript を記述してデバッグするときは、エラー メッセージが表示されることを常に確認する必要があります。「何も起こらない」ということは、エラーを無視していることを示しています。Firefox の場合、アドオンをダウンロードしますFirebug。Safari には、設定で有効にできる開発者ツールもあります。これらのツールを使用すると、このような問題を簡単に見つけて解決できます。

于 2012-04-10T01:00:58.600 に答える