2013-11-03 288 views
0

我有一个自动下拉年份的javascript下拉菜单,如果我选择一年,它会在下拉列表中显示2次。我的目标是在选项列表中只显示1次。例如,如果有3年2013,2014,2015.if我选择2013。它显示这样下拉选择的值在下拉选项中显示两次

2013-selected 
2013 
2013 
2014 
2015. 

请任何一个帮助解决问题。

  <select class="inputmedium" name="year_<?php echo $row->id; ?>" id="year_<?php echo $row->id; ?>" value="<?php echo $row->year; ?>"> 
      <option ><?php echo $row->year; ?></option> 
      <script type="text/javascript"> 
      var min = new Date().getFullYear(), 
    max = min + 20, 
    select = document.getElementById('year_<?php echo $row->id; ?>'); 

for (var i = min; i<=max; i++){ 
    var opt = document.createElement('option'); 
    opt.value = i; 
    opt.innerHTML = i; 
    select.appendChild(opt); 
} 
</script> </select> 
+0

适用于我:http://jsfiddle.net/barmar/ddxm5/1/。我怀疑你有其他的东西添加额外的选项。 – Barmar

+0

当我更新到mysql时,它会在下拉菜单中显示两次 – user2935177

+0

在这种情况下,您需要在for循环中添加条件,即如果已经选择标签选项具有值并限制该条件。 –

回答

0

跳过这是在PHP代码中添加了一些选项:

for (var i = min; i<=max; i++){ 
    if (i == <?php echo $row->year; ?>) { 
     continue; 
    } 
    var opt = document.createElement('option'); 
    opt.value = i; 
    opt.innerHTML = i; 
    select.appendChild(opt); 
} 
+0

谢谢巴尔玛。它的工作 – user2935177

0

请检查此,

var min = new Date().getFullYear(), 
    max = min + 9, 
    select = document.getElementById('year'); 

    for (var i = min; i <= max; i++) { 
     var opt = document.createElement('option'); 
     opt.value = i; 
     opt.innerHTML = i; 

     var exists = 0 != $('#year option[value='+i+']').length; 

     console.log(exists); 

     if(!exists){  
      select.appendChild(opt); 
     } 
    } 

http://jsfiddle.net/ddxm5/2/

另一种方法:

var min = new Date().getFullYear(), 
    max = min + 9, 
    select = document.getElementById('year'); 

    for (var i = min; i <= max; i++) { 
     var opt = document.createElement('option'); 
     opt.value = i; 
     opt.innerHTML = i; 

     var exists= select.options[select.selectedIndex].value;   
     console.log(exists); 

     if(exists!=i){  
      select.appendChild(opt); 
     } 
    } 

http://jsfiddle.net/ddxm5/5/