2011-01-12 60 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。