Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript启用和禁用复选框_Javascript_Checkbox - Fatal编程技术网

使用javascript启用和禁用复选框

使用javascript启用和禁用复选框,javascript,checkbox,Javascript,Checkbox,这是我的复选框和文本框: <td> <input type ="checkbox" id="haha" onclick="enable('<?php echo $agenda->id; ?>')" value=<?php echo $agenda->id; ?>> <td> <input type="text" name="dnama" id="nama_<?php echo $agenda->id; ?

这是我的复选框和文本框:

<td> <input type ="checkbox" id="haha" onclick="enable('<?php echo $agenda->id; ?>')" value=<?php echo $agenda->id; ?>>

<td> <input type="text" name="dnama" id="nama_<?php echo $agenda->id; ?>" value="<?php echo $agenda->nama; ?>" disabled /> </td>
<td> <input type="text" name="dketer" id="ket_<?php echo $agenda->id; ?>" value="<?php echo $agenda->keterangan; ?>" disabled> </td>

我的问题是为什么这只适用于第一行,我选中了第一个复选框文本框将被启用,然后我取消选中了第一个复选框,选中了第二个复选框和其他仍然禁用的文本框。。如何修复此问题?

您需要以下内容:

function testEna() { 
  var dis = this.checked;
  document.getElementById("nama"+this.id).disabled=dis;
  document.getElementById("ket"+this.id).disabled=dis;
}
window.onload=function() {
  var ena = document.querySelectorAll(".enabler");
  for (var i=0;i<ena.length;i++) {
    ena[i].onclick=testEna;
    ena[i].onclick(); // run now too
  }
}
函数testEna(){
var dis=此项检查;
document.getElementById(“nama”+this.id).disabled=dis;
document.getElementById(“ket”+this.id).disabled=dis;
}
window.onload=function(){
var ena=document.querySelectorAll(“.enable”);

对于(var i=0;i我不知道您的ID,但禁用和启用复选框代码如下:

function enable() {
    document.getElementById("some_id").disabled= false;

}

function disable() {
    document.getElementById("some_id").disabled= true;
}

您可以只使用一个功能:

function toggle(someId) {
    document.getElementById(someId).disabled = !document.getElementById(someId).disabled;
}

正如您所说,您正在使用相同的id两次。在不更改id的情况下,您可以使用此id。但是您应该更新参数,即,您应该传递此对象,而不是传递id

function enable(pobj) {
var id = pobj.value;
var disabled = !pobj.checked;
document.getElementById("nama_"+id).disabled = disabled;
document.getElementById("ket_"+id).disabled = disabled;
}
最好不要使用相同的id


作为参考,您可以查看

我不知道您的问题是否准确,但使用jQuery进行此操作很好。我已经尝试了一些方法。请参阅下面的JSFIDEL链接

jsfiddle.net/ravipateldhg/5c7rdt0a
试试这个

function EnableDisable(id) {
document.getElementById("nama_"+id).disabled =false;
document.getElementById("ket_"+id).disabled = false;
var disabled = !document.getElementById('haha').checked;
document.getElementById("nama_"+id).disabled = disabled;
document.getElementById("ket_"+id).disabled = disabled; }

如果你能删除php并提供一个小标题“为什么这只在第一行工作”,那该多好啊,
id
是唯一的,如果你比checbox拥有更多相同的id
,它将在第一行工作。是的,谢谢。你是对的,我的复选框具有相同的id#哈哈,但值不同。我如何修复它?我尝试了getElementByid('haha')).value,但它无法工作。请将问题编辑为代码段(单击[]按钮)删除所有PHP,因为它与问题无关,实际上看起来需要修复ID处理如果它具有相同的ID而不是ID,则传递此对象并获取值,然后获取ID并传递给它ID的依赖元素。他正确使用了复选框的选中布尔值
jsfiddle.net/ravipateldhg/5c7rdt0a
function EnableDisable(id) {
document.getElementById("nama_"+id).disabled =false;
document.getElementById("ket_"+id).disabled = false;
var disabled = !document.getElementById('haha').checked;
document.getElementById("nama_"+id).disabled = disabled;
document.getElementById("ket_"+id).disabled = disabled; }