2013-11-03 245 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/