2014-04-04 60 views
0

我遇到问题。我有多个选项仅更改所选选项的文本

<select name="p_hour"> 
<option value="00">12 am</option> 
<option value="01">1 am</option> 
<option value="02">2 am</option> 
<option value="03">3 am</option> 
<option value="04">4 am</option> 
<option value="05">5 am</option> 
<option value="06">6 am</option> 
<option value="07">7 am</option> 
<option value="08">8 am</option> 
<option value="09">9 am</option> 
<option value="10">10 am</option> 
</select> 

我想实现的是,当有人做了一个选择的选项的文字应该只无AM/PM更改为数字选择框。该代码是

jQuery("select[name='p_hour']").on('change', function() { 
    $selectedval = jQuery("select[name='p_hour'] option:selected").text(); 
    $selectedval = $selectedval.slice(0,-2); 
    jQuery("select[name='p_hour'] option:selected").text($selectedval); 
    $selectedval = ''; 
}); 

但问题是该选项的文本保持数只有在另外的选择时,我想改变文本仅只有选定的选项。谁能帮我?

+1

工作演示:http://jsfiddle.net/qsDn5/92/ –

+0

如果我正确理解你,例如你选择了1点,它将变成1.但是如果我改变了这个值(比如3点), 1应该回到凌晨1点,凌晨3点到3点。这是正确的吗? – witherwind

+0

是的,你是对的.. –

回答

0

可能不是最优雅但试试

jQuery(function ($) { 
    var selectedval, $select = $("select[name='p_hour']"), 
     $prev; 
    $select.on('change', function() { 
     var $cur = $select.find("option:selected") 
     if ($prev) { 
      if ($prev.is($cur)) { 
       return; 
      } 
      $prev.text(selectedval); 
     } 
     selectedval = $cur.text(); 
     $cur.text(selectedval.slice(0, -2)); 
     $prev = $cur 
    }).change() 
}) 

演示:Fiddle

+0

@Vidhu是:( - 请参阅http://jsfiddle.net/ arunpjohny/j3Uwu/3/ –

+0

谢谢你的努力.. –

0

这是因为你缺少);关闭您的.on()处理程序,并确保你已经把你的代码DOM准备好处理程序中:

jQuery(function() { 
    jQuery("select[name='p_hour']").on('change', function() { 
     $selectedval = jQuery("select[name='p_hour'] option:selected").text(); 
     $selectedval = $selectedval.slice(0, -2); 
     alert($selectedval); 
     jQuery("select[name='p_hour'] option:selected").text($selectedval); 
     $selectedval = ''; 
    }); // <-- Here 
}); 

Fiddle Demo

+0

对不起,这是一个错字错误,我编辑了我的问题,请看看我想实现什么。 –

+0

你有没有检查我的更新和演示? – Felix

+1

是的,但问题是,如果从下拉列表中的1上午它更改1,并且如果作出另一个选择1仍然我只想要更改选定选项的文本 –