2012-02-02 68 views
0

我已經硬編碼並將項目添加到下拉列表中,即團隊大小爲1,2,3。刪除下拉列表中的重複項

當我加載此下拉列表進行編輯/更新,我得到重複的值,這樣

4 ......我該怎麼辦消除這個重複的值?

請看下面

  <select name="anesthesia" id="selectAnesthesiaVal" style="width:25%;" class="required safe" AppendDataBoundItems = "false"> 
      <option value="<?php echo isset($event)?$event->proc_anesthesia_type:"" ;?>"><?php echo isset($event)?$event->proc_anesthesia_type:"" ;?></option><option value="General">General</option> 
      <option value="Mac">Mac</option> 
      <option value="Spinal/Epidural">Spinal/Epidural</option> 
      <option value="Regional">Regional</option> 
      <option value="Local">Local</option> 
      <option value="Other">Other</option> 
     </select> 
+2

什麼是「硬編碼的下拉列表」的代碼? – Mike 2012-02-02 23:55:04

+1

如果它是「硬編碼」,你如何編輯/更新它? – 2012-02-02 23:58:53

+0

使用jQuery.each()循環遍歷每個元素並測試是否存在具有相同值的另一個元素。如果是這樣,使用jQuery.remove()來擺脫它。 – 2012-02-03 00:03:21

回答

1

如果你不希望使用jQuery爲此,我建議將所有可能的值放入數組中,並在PHP中循環使用它們。然後,如果該值存在,則只放置一次。另外,如果你想使用jQuery,並且PHP在你的情況下是不可能的,那麼讓我知道,我會發布一些jQuery。

UPDATE

這將這樣的伎倆。我已經明確地提出意見,逐步解釋正在發生的事情。希望這可以幫助。

請注意,這將是更有效做到這一點在PHP

// Set the present object 
var present = {}; 
$('#selectAnesthesiaVal option').each(function(){ 
    // Get the text of the current option 
    var text = $(this).text(); 
    // Test if the text is already present in the object 
    if(present[text]){ 
     // If it is then remove it 
     $(this).remove(); 
    }else{ 
     // Otherwise, place it in the object 
     present[text] = true; 
    } 
}); 
1

的代碼,我懷疑該行

<option value="<?php echo isset($event)?$event->proc_anesthesia_type:"" ;?>"><?php echo isset($event)?$event->proc_anesthesia_type:"" ;?></option>

其相應於選擇控制choosen選項,即在第一次加載你看到的編碼清單,因爲這

附加選項行返回空選項,但是當您選擇實際選項時,第一個選項將填入選擇的值

此c因爲你需要做兩件事 1刪除此行 2爲每行硬編碼選項添加條件,並將其設置爲根據$event->proc_anesthesia_type 的值進行選擇,並且由於第二個坦克,您最終將得到6條几乎相同的條件語句selected='selected'每個選項

所以爲了使整個代碼看起來挺我建議,而不是hardcodding選項添加值列出,甚至更好的字典,並在循環檢查此條件