2014-10-30 57 views
0

這是我當前的腳本。 else if不起作用。jquery attr無法禁用下拉菜單

$('#groupbyCheckbox').change(function() { 
    if ($("#groupbyDropdown").prop("disabled", true)) { 
    $("#groupbyDropdown").attr('disabled',''); 
    alert('true'); 
    } 
    else if ($("#groupbyDropdown").prop("disabled", false)) { 
    alert(); 
    $("#groupbyDropdown").attr('disabled','disabled'); 
    alert('false'); 
    } 
}); 

additional question. 

$('#newCheckBox').change(function(){ 
     $("#dropDown").empty(); 
     var items = []; 
     $.each(var1, function(key, data) { 
      items.push('<option value='+key+'>'+varlist+'</option>'); 
     }); 
     $("#dropDown").append(items.join('')); 
    }); 
+0

你需要使用'$( 「#groupbyDropdown」)。prop('disabled',true);' – 2014-10-30 05:47:24

+0

將參數傳遞給第二個提醒 – cyan 2014-10-30 05:48:44

+0

第一個if正在工作,但第二個不是。 – superdb 2014-10-30 05:50:39

回答

0

在這兩種情況下,您都在設置值而不是獲取值。在這裏看到:

if ($("#groupbyDropdown").prop("disabled", true)) { 

實際上是設置屬性。你想要的是檢查它的當前值:

if ($("#groupbyDropdown").prop("disabled") == true) { 

或者乾脆:

if ($("#groupbyDropdown").prop("disabled")) { 

同樣的原則也適用於else if

else if ($("#groupbyDropdown").prop("disabled", false)) { 

應該是:

else if ($("#groupbyDropdown").prop("disabled") == false) { 

或者乾脆:

else if (!$("#groupbyDropdown").prop("disabled")) { 

這就是爲什麼它從來沒有進入else區塊 - 你總是將它設置爲true事先(與兩個ifelse if整個條件將評估爲true,反正這樣沒有真正的檢查發生)。

看到一個簡單的例子這裏(切換複選框禁用狀態):http://jsfiddle.net/Lohervar/

+0

它總是如此 – superdb 2014-10-30 05:54:46

+0

不,請參閱我寫的示例。 – Shomz 2014-10-30 05:58:30

+0

下面是一個更準確的示例:http://jsfiddle.net/Lohervar/1/ – Shomz 2014-10-30 06:12:47

0

嘗試

$('#groupbyCheckbox').change(function() { 
    var isDisable= $("#groupbyDropdown").prop("disabled"); 
    $("#groupbyDropdown").prop("disabled",!isDisable); 
}); 

注:設置禁止屬性$( 「#groupbyDropdown」).prop( 「已禁用」 ,真),不回Boolean,它總是返回object

使用if($("#groupbyDropdown").prop("disabled")==false)

+0

謝謝youuuuuuuuuuu。 – superdb 2014-10-30 06:00:15

+0

我在10分鐘前寫過... – Shomz 2014-10-30 06:01:40

+0

@Downvoter你能爲你的投票發表評論嗎? – Balachandran 2014-10-30 06:02:11

1

我知道你在試圖做的是啓用/禁用基於該複選框是否被選中

jQuery(function($) { 
 
    $('#groupbyCheckbox').change(function() { 
 
    $("#groupbyDropdown").prop('disabled', this.checked); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input type="checkbox" id="groupbyCheckbox" /> 
 
<select id="groupbyDropdown"> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
</select>


在代碼中存在多個問題的選擇,

  • if條件下,您使用的設置器版本.prop()將始終返回一個jquery對象,因此將永遠被truthy
  • 也不應使用.attr()來設置喜歡禁用的屬性,你需要使用.prop()
+0

+1這可能正是OP想要做的。 – Shomz 2014-10-30 06:15:26