2013-08-16 66 views
0

我正在一個菜單上,我希望它的選項是互斥的。例如,如果他們選擇低重要性,那麼高重要性應該不是一種選擇,如果他們選擇低緊急性,則高緊急性也不應該成爲選項。我怎樣才能實現這個使用jQuery?jQuery - 禁用或從菜單中刪除選項

<label>Select the priority level of the task:&nbsp;</label> 
<select id="taskPriority" name="priority[]" multiple="multiple"> 
     <option value="lowImp">Low Importance</option> 
     <option value="highImp">High Importance</option> 
     <option value="lowUrg">Low Urgency</option> 
     <option value="highUrg">High Urgency</option> 
</select> 
+4

你檢查這一點:http://stackoverflow.com/questions/1518216/jquery-remove-options-from-select –

+0

如何在該線程的選項和條件語句進行組合?該應用程序其實很簡單:它捕獲表單元素的值,然後將它們輸出到div。所以我不能100%確定在哪裏嘗試並插入if語句。 http://jsfiddle.net/aa_navarro/vkkG4/8/ – navarro

回答

1

我做了一些檢查,當選擇更改:http://jsfiddle.net/ckyBj/1/

這可能是TH我寫醜的代碼,但它的工作原理。你或許可以使它更緊湊。

$(document).ready(function() { 
    $('#taskPriority').on('change', function() { 
     var theval = $(this).val(); 
     console.log(theval); 
     if (jQuery.inArray('lowImp',theval) > -1) { 
      $('#taskPriority').find('option[value=highImp]').prop('disabled', true); 
     } 
     if (jQuery.inArray('highImp',theval) > -1) { 
      $('#taskPriority').find('option[value=lowImp]').prop('disabled', true); 
     } 
     if (jQuery.inArray('lowUrg',theval) > -1) { 
      $('#taskPriority').find('option[value=highUrg]').prop('disabled', true); 
     } 
     if (jQuery.inArray('highUrg',theval) > -1) { 
      $('#taskPriority').find('option[value=lowUrg]').prop('disabled', true); 
     } 
     if(jQuery.inArray('lowImp',theval) == -1){ 
       $('#taskPriority').find('option[value=highImp]').prop('disabled',false); 
     } 
     if(jQuery.inArray('highImp',theval) == -1){ 
       $('#taskPriority').find('option[value=lowImp]').prop('disabled',false); 
     } 
     if(jQuery.inArray('lowUrg',theval) == -1){ 
       $('#taskPriority').find('option[value=highUrg]').prop('disabled',false); 
     } 
     if(jQuery.inArray('highUrg',theval) == -1){ 
       $('#taskPriority').find('option[value=lowUrg]').prop('disabled',false); 
     } 
    }); 
});