簡體   English   中英

通用JavaScript處理單選按鈕啟用/禁用

[英]generic javascript to handle radio button enable/disable

我希望僅在選中關聯的復選框時啟用單選按鈕。 因此,在編寫通用javascript代碼時需要幫助,該代碼適用於所有復選框。 我大約有100個復選框,所以我不想在javascript代碼中手動寫入每個ID或名稱。 是否可以通過通用方式提供代碼示例以說明如何執行此操作。

<form name=registration>
<table border=1>
<tr>
    <td><input type='checkbox' id='c1' name=selcourse value='2-PM-030' onChange="enabledSDF(1,this.value);"> Microsoft Project 2013 </td>
    <td>&nbsp;</td><td><input type=radio id=cd name='2-PM-030' value='Dec 11-12'>Dec 11-12</td>
    <td><input type=radio id=c1d1 name='2-PM-030' value='Jan 26-27'>Jan 26-27</td><td>&nbsp;</td>
    <td>&nbsp;</td><td>&nbsp;</td>
</tr>

<tr>
    <td><input type='checkbox' id='c2' name=selcourse value='2-PM-050'> Microsoft Project 2010 </td>
    <td><input type=radio id=c2d1 name='2-PM-050' value='Nov 24-25'>Nov 24-25</td>
    <td><input type=radio id=c2d2 name='2-PM-050' value='Dec 18-19'>Dec 18-19</td>
    <td><input type=radio id=c2d3 name='2-PM-050' value='Jan 29-30'>Jan 29-30</td>
    <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
</tr>
</table>
</form>

我找到了以下代碼,但不確定如何使其通用。

<script type="text/javascript">
$(window).load(function(){
$(document).ready(function()

function enabledSDF(i,value){
    var form = document.registration;
    if(document.getElementById('course_type').value=='C')
    {
            if (value=="Singaporean"){
                document.getElementById("sdf"+i+"0").disabled='';
                document.getElementById("sdf"+i+"1").disabled='';
            }
            else{
                document.getElementById("sdf"+i+"0").disabled='disabled';
                document.getElementById("sdf"+i+"1").disabled='disabled';
            }
    }
}

$(document).ready(function() 
{

    $("#email_acc").click(function()
    { 
        if ( $(this).is(":checked") ) 
        {  
            $("input[name='radio_email']").removeAttr("disabled");

        }else {

            $("input[name='radio_email']").attr ( "disabled" , true );
        }
    });  

    $("#sys_acc").click(function()
    {
        if ( $(this).is(":checked") )
        {   
            $("input[name='radio_system']").removeAttr("disabled");
        } else {

            $("input[name='radio_system']").attr ( "disabled" , true );
        }
    }); 
});
</script>

請嘗試以下操作:

 $(function() { $('input[type="checkbox"]') .on('change', checkboxChange) // do it when you change the checkbox .each(checkboxChange); // as well as once when the page loads function checkboxChange() { var $checkbox = $(this); $('input[name="' + $checkbox.attr('value') + '"]').prop('disabled', !$checkbox.prop('checked')); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form name=registration> <table border=1> <tr> <td> <input type='checkbox' id='c1' name=selcourse value='2-PM-030' onChange="enabledSDF(1,this.value);">Microsoft Project 2013</td> <td>&nbsp;</td> <td> <input type=radio id=cd name='2-PM-030' value='Dec 11-12'>Dec 11-12</td> <td> <input type=radio id=c1d1 name='2-PM-030' value='Jan 26-27'>Jan 26-27</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td> <input type='checkbox' id='c2' name=selcourse value='2-PM-050'>Microsoft Project 2010</td> <td> <input type=radio id=c2d1 name='2-PM-050' value='Nov 24-25'>Nov 24-25</td> <td> <input type=radio id=c2d2 name='2-PM-050' value='Dec 18-19'>Dec 18-19</td> <td> <input type=radio id=c2d3 name='2-PM-050' value='Jan 29-30'>Jan 29-30</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> </table> </form> 

編輯:如果未通過通用屬性值鏈接

如果單選按鈕的名稱與要禁用它們的復選框的名稱不同,則需要從已更改為包含它們的<tr>的復選框中遍歷,然后找到單選按鈕在那。

為此,只需按如下所示更改我的checkboxChange()函數即可。

function checkboxChange() {
    var $checkbox = $(this);
    $checkbox.closest('tr').find('input[type=radio]').prop('disabled', !$checkbox.prop('checked'));
}

HTML:

  <form name=registration>
<table border=1>
<tr>
    <td><input type='checkbox' class="des" data-year='2013' name=selcourse value='2-PM-030'> Microsoft Project 2013 </td>
    <td>&nbsp;</td><td><input type=radio class="2013" name='2-PM-030' value='Dec 11-12'>Dec 11-12</td>
    <td><input type=radio class="2013" name='2-PM-030' value='Jan 26-27'>Jan 26-27</td><td>&nbsp;</td>
    <td>&nbsp;</td><td>&nbsp;</td>
</tr>

<tr>
    <td><input type='checkbox' class="des" data-year='2010' name=selcourse value='2-PM-050'> Microsoft Project 2010 </td>
    <td><input type=radio class="2010" name='2-PM-050' value='Nov 24-25'>Nov 24-25</td>
    <td><input type=radio class="2010" name='2-PM-050' value='Dec 18-19'>Dec 18-19</td>
    <td><input type=radio class="2010" name='2-PM-050' value='Jan 29-30'>Jan 29-30</td>
    <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
</tr>
</table>
</form>

JavaScript的:

$('.des').on('change', function () {
  var type = $(this).data('year');
  if(this.checked){
    $('.' + type).attr('disabled', 'true');
  } else {
    $('.' + type).removeAttr( "disabled" );
  }
});

如果您已經在使用jquery,最好利用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM