2013-05-29 59 views
2

我想創建一個小的可重用的函數,當選中時禁用文本字段並插入默認值'160',並且當未選中時,啓用該字段並刪除該值。我已經完成了大部分工作,但未經檢查的部分將我拋棄。jQuery複選框啓用/禁用文本輸入和添加/刪除默認值

$('#chkIsTeamLead').change(function(){ 


    if ($('#chkIsTeamLead').checked = true){ 
     $('#txtNumHours').val('160').attr('disabled', 'disabled'); 
     console.log('checked'); 
    } 

    if ($('#chkIsTeamLead').checked = false){ 
    $('#txtNumHours').val('').removeAttr('disabled'); 
    console.log('unchecked'); 
    } 

}); 

我有它設置爲與傳遞給它的參數的可重複使用的功能,但是這是給我更多的麻煩,我想的參數是複選框,目標和價值最好 鏈接到我當前的代碼:http://codepen.io/AlexBezuska/pen/bwgsA 感謝您提供任何幫助!

+1

在您的條件下使用'$('#chkIsTeamLead')。is(':checked')'。 – 2013-05-29 06:23:24

+0

你必須用'=='比較兩個值。 – 2013-05-29 06:24:58

+3

你可以使用if(){} else {}而不是2 if if's –

回答

11

Working jsFiddle Demo

  1. 使用​​。
  2. 您必須將兩個值與==進行比較。
  3. 當您使用屬性disabled時,最好使用.prop()方法而不是.attr()

$('#chkIsTeamLead').change(function(){ 
    if ($('#chkIsTeamLead').is(':checked') == true){ 
     $('#txtNumHours').val('160').prop('disabled', true); 
     console.log('checked'); 
    } else { 
     $('#txtNumHours').val('').prop('disabled', false); 
     console.log('unchecked'); 
    } 
}); 

參考文獻:

+4

我認爲'== true'並不是必要的,因爲'if'可以自己工作 – krishgopinath

+0

@passionateCoder是的,我只是把它留在那裏用於'=='來顯示OP。 – 2013-05-29 06:35:59

+0

也Doug Crockford會[殺死](http://youtu.be/hQVTIJBZook)你,如果你沒有使用'==='而不是'==':P – krishgopinath

1

試試這個

$('#chkIsTeamLead').change(function(){ 


    if ($('#chkIsTeamLead').is(':checked')){ 
     $('#txtNumHours').val('160').attr('disabled', 'disabled'); 
     console.log('checked'); 
    } else { 
    $('#txtNumHours').val(''); 
    $('#txtNumHours').removeAttr('disabled'); 
    console.log('unchecked'); 
    } 
});