2

我需要以下功能:

“选中复选框时,必须突出显示相应的文本框,并且用户可以在其中输入一些文本..”

复选框正在工作,但是当一个复选框被选中时,相应的文本框没有激活,如何解决这个问题?

这是我的php代码:

<?php
if ($handle = opendir('/year_no/albums')) {
    $blacklist = array('.', '..');
    while (false !== ($file = readdir($handle))) {
        if (!in_array($file, $blacklist)) {
            echo "<form name='form1'>
            <div class='controlset-pad'>
            <font color='black'><label><input type='checkbox' name='album[]' value='$album' onclick='enable_text(this.checked)' class='medium'/><span>$album</span></label><br/></div>​";
            echo"<script> 
            function enable_text(status)
            {
                status=!status;
                document.form1.other_name.disabled = status;
            }
            </script>";
            echo "<div class='field4'><label>Add your comment here</label><input type='text' name='other_name' class='medium' disabled='disabled'/></div></form>";
        }
    }
    closedir($handle);
}
?>

修改后的代码:

<script> 
function enable_text(status, sub)
{
status=!status;
document.getElementById(sub).disabled = status;
}
</script>
<form name='form1'>
<?php
if ($handle = opendir('/year_no/albums')) {
    $blacklist = array('.', '..');
    while (false !== ($file = readdir($handle))) {
        if (!in_array($file, $blacklist)) {
echo "<div class='controlset-pad'>
<font color='black'><label><input type='checkbox' name='file[]' value='$file' onclick='enable_text(this.checked, $file)' class='medium'/><span>$file</span></label>
</div>";
echo "<div class='field4'><label>Add your comment here</label><input type='text' name='sub' id='$file' class='medium' disabled='disabled'/></div>";
        }
    }
    closedir($handle);
}
?>
</form>
4

3 回答 3

6

试试这个:

正如您所说,下面的代码具有在选中复选框时启用文本框并在未选中时再次禁用它的功能。

这是一个工作示例:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js">    </script>
<!-- include JQuery using above line -->

<!-- Here is your small javascript -->
<script type="text/javascript">
$(document).ready(function(e) {
    $("input[type=checkbox]").on("click",function(){
        if($(this).is(':checked')){
                    //If checkbox is checked do whatever you want to do here.
            $("#txt_"+$(this).attr("id")).removeAttr("disabled");
                    $("#drpdwn_"+$(this).attr("id")).removeAttr("disabled");
        } else {
                   // If unchecked.
            $("#txt_"+$(this).attr("id")).attr("disabled","disabled");
                    $("#drpdwn_"+$(this).attr("id")).attr("disabled","disabled");
        }
    });
});
</script>
<?php
$dir = "/year_no/albums";

if(is_dir($dir)) {
    if ($dh = opendir($dir)) {
        $blacklist = array('.', '..');
        $count=1;
        while (($file = readdir($dh)) !== false) {
            if (!in_array($file, $blacklist)){  
                echo "<div class='controlset-pad'>
                        <font color='black'>
                            <label>
                                <input type='checkbox' name='file[]' id='".$count."' value='enabletxtbox' class='medium'/>
                                <span>".$file."</span>
                            </label>
                    </div>";
                echo "<div class='field4'>
                        <label>Add your comment here</label>
                        <input type='text' name='sub' id='txt_".$count."' class='medium' disabled='disabled'/>";

                if(filetype($dir.$file) == "dir"){
                        $dir2 = $dir.$file;
                        $dh2=opendir($dir2);
                        $drpdwn="<select id='drpdwn_".$count."' disabled='disabled'>";
                        while(($file2 = readdir($dh2)) !== false){
                            if(!in_array($file2, $blacklist)){
                                $drpdwn.='<option>'.$file2.'</option>';
                            }
                        }
                        $drpdwn.="</select>";
                        closedir($dh2);
                        echo $drpdwn;

                }
                echo"</div>";
            }
            $count++;
        }
        closedir($dh);
    }
}
?>
于 2012-12-25T09:48:20.797 回答
2

您的代码是完美的,只需添加如下的小改动。

代替id

document.getElementById('other_name').disabled = status;

请注意,id每个元素必须是唯一的。

编辑使用此代码

<?php
if ($handle = opendir('/year_no/albums')) {
    $blacklist = array('.', '..');
    while (false !== ($file = readdir($handle))) {
        if (!in_array($file, $blacklist)) {
echo "<form name='form1'>
<div class='controlset-pad'>
<font color='black'><label><input type='checkbox' name='album[]' value='$album' onclick='enable_text(this.checked, $album)' class='medium'/><span>$album</span></label><br/>
</div>?";
echo"<script> 
function enable_text(status, album)
{
status=!status;
document.getElementById(album).disabled = status;
}
</script>";
echo "<div class='field4'><label>Add your comment here</label><input type='text' name='other_name' id = '$album' class='medium' disabled='disabled'/></div></form>";
        }
    }
    closedir($handle);
}
?>

注意 $album 值不能为空

于 2012-12-25T07:26:12.837 回答
2

使用这个例子

    <form name="form1">
    <script>
    function enable_text(status)
            {
            alert(status)
            status=!status;
            document.form1.other_name.disabled = status;
            }
    </script>
        <input type='checkbox' name='album' value='hi' onclick='enable_text(this.checked)' class='medium'/>
        <input type='text' name='other_name' class='medium' disabled='disabled'/>
    </form>
于 2012-12-25T07:32:13.980 回答