2012-10-18 300 views
2

我已經使用jsfiddle上的特色代碼(下面)。我遇到的問題是,如果我將選項值更改爲與文本值不同,則會將值添加到更改的文本字段中。當選擇其他項目時,從選擇框中添加和刪除選項

jQuery(function(){ 
      jQuery('.selbox').change(function(){ 
      var val = jQuery(this).val(); 

      var sel = jQuery(this); 

      if(val != "") 
      { 
      if(sel.data("selected")) 
      { 
      var oldval = sel.data("selected"); 


      sel 
      .siblings('select') 
      .append(jQuery('<option/>').attr("value", oldval).text(oldval)); 
      } 

      sel 
      .data("selected", val) 
      .siblings('select') 
      .children('option[value=' + val + ']') 

      .remove(); 
      } 
      else if(val == "") 
      { 
      if(sel.data("selected")) 
      { 
      var oldval = sel.data("selected"); 


      sel 
      .removeData("selected") 
      .siblings('select') 
      .append(jQuery('<option/>').attr("value", oldval).text(oldval)); 
      } 
      }    
      }); 
      }); 

我使用的代碼

<option value="1">text here</option> 

請看這裏提供原代碼http://jsfiddle.net/BUuZv/2/

+0

我一遍又一遍地讀了你的問題,我不是確定你想要什麼。如果我從第一個菜單中選擇選項1,它將從菜單2和3中刪除選項1.那沒關係吧?但是如果我在第一個菜單中再次將選項1更改爲選項2,則不希望選項1顯示在另外兩個菜單中? –

回答

0

而不是刪除他們,加入他們,你可以簡單地hide/show他們像this fiddle

$(function() { 
    $('.selbox').change(function() { 
     var val = $(this).val(); 
     var sel = $(this); 

     if (val != "") { 
      if (sel.data("selected")) { 
       var oldval = sel.data("selected"); 
       sel.siblings('select').find('option[value="' + oldval + '"]').show() 
      } 

      sel.data("selected", val).siblings('select').children('option[value=' + val + ']').hide(); 
     } 
     else { 
      if (sel.data("selected")) { 
       var oldval = sel.data("selected"); 
       sel.removeData("selected").siblings('select').find('option[value="' + oldval + '"]').show() 
      } 
     } 
    }); 
}); 
+0

IE瀏覽器顯示/隱藏不起作用!我正在測試IE11 – UID

相關問題