我有一个表单,其中有一个输入字段和复选框
<input type="text" name="t_c[]" />
<input type="checkbox" name="rele_cent[]" checked="checked" value="0_23" onchange="handleChange(this);">
<input type="text" name="t_c[]" />
<input type="checkbox" name="rele_cent[]" checked="checked" value="1_78" onchange="handleChange(this);">
<input type="text" name="t_c[]" />
<input type="checkbox" name="rele_cent[]" checked="checked" value="2_89" onchange="handleChange(this);">
现在我有一个功能
function handleChange(chk){
var arr=chk.value.split('_');
if(chk.checked == true){
document.getElementsByName("t_c[arr[0]]").disabled = false;
}else{
document.getElementsByName("t_c[arr[0]]").disabled = true;
}
}
我想在取消选中时禁用相应的输入字段,并在选中时启用。但我很困惑如何使用getElementsByName("t_c[arr[0]]")
答案 0 :(得分:1)
您可以在拆分后获得arr[0]
的值,以根据input
的值确定需要启用或禁用哪个checkbox
框:
function handleChange(chk){
var arr = chk.value.split('_');
if(chk.checked){
document.getElementsByName("t_c[]")[arr[0]].disabled = false;
}else{
document.getElementsByName("t_c[]")[arr[0]].disabled = true;
}
}
&#13;
<input type="text" name="t_c[]" />
<input type="checkbox" name="rele_cent[]" checked="checked" value="0_23" onchange="handleChange(this);">
<input type="text" name="t_c[]" />
<input type="checkbox" name="rele_cent[]" checked="checked" value="1_78" onchange="handleChange(this);">
<input type="text" name="t_c[]" />
<input type="checkbox" name="rele_cent[]" checked="checked" value="2_89" onchange="handleChange(this);">
&#13;
答案 1 :(得分:1)
您的代码唯一的问题是您需要获取结果的arr[0]
索引处的元素,该元素由getElementsByName
给出。
纠正这一点,您的代码运行良好:
function handleChange(chk) {
var arr = chk.value.split('_');
if (chk.checked == true) {
document.getElementsByName("t_c[]")[arr[0]].disabled = false;
} else {
document.getElementsByName("t_c[]")[arr[0]].disabled = true;
}
}
&#13;
<input type="text" name="t_c[]" />
<input type="checkbox" name="rele_cent[]" checked="checked" value="0_23" onchange="handleChange(this);">
<input type="text" name="t_c[]" />
<input type="checkbox" name="rele_cent[]" checked="checked" value="1_78" onchange="handleChange(this);">
<input type="text" name="t_c[]" />
<input type="checkbox" name="rele_cent[]" checked="checked" value="2_89" onchange="handleChange(this);">
&#13;
答案 2 :(得分:0)
试试这个,因为它工作正常并解决了你的问题,如果还没有,请告诉我。
function handleChange(chk) {
var inputbox = document.getElementsByClassName("inputbox");
var check = document.getElementsByClassName("check");
for(i = 0; i < inputbox.length; i++) {
if(check[i].checked == false) {
inputbox[i].disabled = true;
}
else {
inputbox[i].disabled = false;
}
}
}
<input type="text" name="t_c[]" class="inputbox"/>
<input class="check" type="checkbox" name="rele_cent[]" checked="checked" value="0_23" onchange="handleChange(this);">
<input type="text" name="t_c[]" class="inputbox" />
<input class="check" type="checkbox" name="rele_cent[]" checked="checked" value="1_78" onchange="handleChange(this);">
<input type="text" name="t_c[]" class="inputbox" />
<input class="check" type="checkbox" name="rele_cent[]" checked="checked" value="2_89" onchange="handleChange(this);">