2017-10-20 84 views
0

如何啓用輸入複選框,如果我檢查複選框?如何在複選框中啓用輸入,如果我選中複選框? cuz它總是禁用當我檢查輸入類型複選框

當我檢查輸入類型的複選框時,它總是禁用。

function ckChange(ckType) { 
 
    var ckName = document.getElementsByName(ckType.name); 
 
    var checked = document.getElementById(ckType.id); 
 

 
    if (checked.checked) { 
 
    for (var i = 0; i < ckName.length; i++) { 
 

 
     if (!ckName[i].checked) { 
 
     ckName[i].disabled = true; 
 
     } else { 
 
     ckName[i].disabled = false; 
 
     } 
 
    } 
 
    } else { 
 
    for (var i = 0; i < ckName.length; i++) { 
 
     ckName[i].disabled = false; 
 
    } 
 
    } 
 
}
<input type="checkbox" placeholder="toBeReturn" name="progress" id="progress1" value="1" tabIndex="1" onClick="ckChange(this)"> For use in showroom to be return on 
 
<input type="date" name="progress" id="progress3" placeholder="date"> 
 
<br/> 
 
<input type="checkbox" placeholder="OnLoan" name="progress" id="progress2" value="1" tabIndex="1" onClick="ckChange(this)"> On Loan 
 
<br/> 
 
<input type="checkbox" placeholder="Other" name="progress" id="progress6" value="1" tabIndex="1" onClick="ckChange(this)"> Other 
 
<input type="text" name="progress" id="progress3" placeholder="State the Purpose">

我需要幫助來完成我的項目,謝謝!

回答

0

只需切換「if」和「else」語句中的相應內容即可。

此外,如果您在未選中複選框的情況下加載頁面,還可以在文本輸入中添加「已禁用」以使其匹配。

function ckChange(ckType) { 
 
    var ckName = document.getElementsByName(ckType.name); 
 
    var checked = document.getElementById(ckType.id); 
 

 
    if (checked.checked) { 
 
    for (var i = 0; i < ckName.length; i++) { 
 
     ckName[i].disabled = false; 
 
    } 
 
    } else { 
 

 
    for (var i = 0; i < ckName.length; i++) { 
 
     if (!ckName[i].checked) { 
 
     ckName[i].disabled = true; 
 
     } else { 
 
     ckName[i].disabled = false; 
 
     } 
 
    } 
 
    } 
 
}
<th> 
 
    <input type="checkbox" placeholder="toBeReturn" name="progress" id="progress3" value="1" tabIndex="1" onClick="ckChange(this)"> For use in showroom to be return on <input type="date" name="progress" id="progress3" placeholder="date" disabled> 
 
</th>

0

我認爲問題是,你「的」說法,「爲」語句匹配所有的檢查boxs包括您選中的,你需要從再排除,所以你可能會這樣嘗試:

function ckChange(ckType) { 
     var ckName = document.getElementsByName(ckType.name); 
     var checked = document.getElementById(ckType.id); 

     if (checked.checked) { 
      for (var i = 0; i < ckName.length; i++) { 
       if(ckName[id].id !==checked.id){ 
        ckName[i].disabled = false; 
       } 
      } 
     } else { 
      for (var i = 0; i < ckName.length; i++) { 
       if(ckName[id].id !==checked.id){ 
        if (!ckName[i].checked) { 
        ckName[i].disabled = true; 
        } else { 
         ckName[i].disabled = false; 
        } 
       } 
      } 
     } 
    } 
相關問題