2015-09-30 50 views
-6

如何在不更改選項中的文本的情況下更改下拉列表的選定文本?例如:如果下拉列表中有代碼和說明,但選擇我只想顯示代碼並刪除描述,但描述應該出現在下拉列表中。在下拉

更改下拉列表的選定文本而不更改選項中的文本?

填充數據:

$.each(jtc12_2_2_reasoncode1List, function(i, item) { 
      $('#jtc12_2_reasonForFailure1').append($('<option>', { 
       value : item.Code, 
       text : item.Code + " " + item.Description 
      })); 
     }); 

更改所選選項的文本:實現這個

var jtc12_2_2_reasonCode1Code = $("#jtc12_2_reasonForFailure1 :selected").val(); 
     var jtc12_2_2_reasonCode1Desc = _.filter(e.data.jtc12_2_2_reasonCode1List, function(item) { 
      return item.Code === jtc12_2_2_reasonCode1Code; 
     }); 
     jtc12_2_2_reasonCode1Desc = jtc12_2_2_reasonCode1Desc[0].Description; 
     $("#jtc12_2_reasonForFailure1 option[value = " + jtc12_2_2_reasonCode1Code + "]").text(jtc12_2_2_reasonCode1Code); 
+1

請附上您試圖 – guradio

+0

請給一些更現實的例子代碼。 – vijayP

+1

請使用描述您問題的標題。字面上有成千上萬個關於jQuery和JavaScript的問題,所以僅僅將它作爲標題並不是很有用。 – Anders

回答

0

一種方法是在運行時添加一個新的選項,並選擇(新添加的)值而不是選定的值。然後,可以在下拉的點擊事件中移除選定的值。

假設代碼和描述以冒號(:)分隔,請參閱以下代碼。

var onSelect = false; 
$('select').click(function (e) { 


    if ($(this).val() !== '' && !onSelect) { 
     $(this).find('option:selected').remove(); 
    } else { 

     onSelect = false; 
    } 
}); 

$('select').change(function (e) { 

    var selectedVal = $(this).val(); 
    var newVal = selectedVal.split(':')[0]; 
    $(this).append($('<option>', { 
     value: newVal, 
     text: newVal 
    })); 

    $(this).val(newVal); 
    $(this).find('option:selected').hide(); 
    onSelect = true; 
}); 

jsFiddle

相關問題