2011-01-12 62 views
2

我有選擇項的選擇菜單更改在選擇菜單中選擇框中的文本onChange事件

<select> 
<option>--1</option> 
<option>--2</option> 
<option>--3</option> 
<option>--4</option> 
</select> 

當我從選擇菜單中選擇一個項目,它顯示「--2」在框中。我只想要'2'顯示在選定的項目框中。我怎樣才能做到這一點?

如果我在jQuery中獲得解決方案,那將是更可取的。

注意:我不希望顯示在下拉菜單中的值隨時更改,但顯示在選擇框中的值不能包含' - '(破折號)。

回答

0
alert("--1".replace("--", "")); 

這樣:

$("select").change(function() { 
    $("#someInput").val($(this).val().replace("--", "")); 
}); 

Try it here.

0

如果只想全部更換entrys,你可以調用

$(function() { 
    $('select').find('option').each(function(index,elem) { 
     $(elem).text(function(i, text) { 
      return text.replace(/^--/, ''); 
     }); 
    }); 
}); 

,如果你選擇的時候去做想做的只是更換entrys

$(function() { 
    $('select').bind('change', function() { 
     var self = this; 

     $(this).find('option:selected').text(function(i, text) { 
      if(self.last) 
       $(self.last).text(function(i, oldtext) { 
        return '--' + oldtext; 
       }); 

      self.last = this; 

      return text.replace(/^--/, ''); 
     }); 
    }); 
}); 

演示:http://www.jsfiddle.net/4yUqL/39/

1

好像你正在嘗試做的是有一個顯示值和值JavaScript可以獲取。在這種情況下,我建議你改變你的select元素,而不是寫定製的javascript來改變外觀。這聽起來像可以解決你的問題。

我會寫select按如下:

<select> 
    <option value="--1">1</option> 
    <option value="--2">2</option> 
    <option value="--3">3</option> 
    <option value="--4">4</option> 
</select> 

然後閱讀,而不是選擇元素的文本值(見:http://www.w3schools.com/TAGS/tag_option.asp

你提出的解決方案是很難除非使用自定義元素覆蓋整個選擇,否則請使用javascript或jquery。