下拉选择值在下拉选项中显示两次

时间:2013-11-03 08:12:08

标签: javascript php drop-down-menu

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

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>

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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/