2013-08-25 45 views
-1

下面是代碼選擇/改變值的範圍在jQuery函數

$('#printlocs').on('change', function() { 
    var selctloc = $('#printlocs').find('option:selected'); 
    $('#loc1').prop('disabled', selctloc.val() == '0'); 
    $('#loc2').prop('disabled', selctloc.val() == '0'); 
    $('#loc3').prop('disabled', selctloc.val() == '0'); 
    $('#loc4').prop('disabled', selctloc.val() == '0'); 
}); 

我想使它所以當等於'0'#loc2'0' or '1'禁用等與#loc1字符串只禁用,但我無法弄清楚。我試過用括號括起來,使用||,但沒有任何工作。

+0

請張貼一個完整的代碼示例,在這種情況下,包括你正在使用jQuery的HTML。 – j08691

+0

找到解決方案並不需要HTML代碼。 – Potatrick

回答

1

只需檢查這些值?

$('#printlocs').on('change', function() { 
    $('#loc1').prop('disabled', (this.value == '0')); 
    $('#loc2').prop('disabled', (this.value == '0' || this.value == '1')); 
    $('#loc3').prop('disabled', (this.value == '0' || this.value == '2' || this.value == '3')); 
    $('#loc4').prop('disabled', (this.value == '4')); // 4 only ? 
}); 

FIDDLE

你這樣做當然需要選擇具有這些值

+0

感謝您讓我走上正軌。我試圖發佈新的代碼,但評論都搞砸了。我只需要用我的var替換「this」,因爲所做的更改是在不同的選擇中進行的。 – Potatrick

0

如果我的理解,當你想正確地禁用你的選擇,你可以使用一個事實,即prop select元素函數也需要一個function作爲第二個參數,所以你可以使用它以及開始選擇器來簡化你的代碼。

例如:

var val = Number(selctloc.val()); 

$('[id^=prop]').prop('disabled', function() { 
    //get the number of the element out of the id 
    var num = Number(this.id.substring(3)); 

    //disable if the value is smaller than the number 
    return val < num; 
});