2016-05-17 109 views
1

这是一个我无法解决的简单问题。不用说,我是JavaScript新手。如何让新选中的html选项成为第一选择?

我已按字母顺序对下拉列表进行了排序,第一个选项除外,因为它具有选定的值。现在,当用户选择不同的值时,我希望该选项成为第一个选项,其余按字母顺序排列。

我是否需要在javascript中进行排序才能做到这一点,或者是否存在“附加到列表顶部”的函数?

排序在html是排序的树枝。我使用的不是一个js函数...

HTML

<div class = "dropdowns"> 
    <select id = "dropdown"> 
     <option selected> name </option> 
      {% for key, value in Informations|sort %} 
       <option value="{{ key }}"> {{ value }} </option> 
      {% endfor %}   
    </select> 
</div> 

JS

// Set textfield input to selected dropdown option 
    var myTextBox = document.getElementById('Infos'); 
    var myDropdown = document.getElementById('dropdown'); 

    document.addEventListener("DOMContentLoaded", function(event) { 
     $("select").change().append($("#dropdown")); 
     // $("#dropdown").val($("#dropdown option:select").val()); 
     // myDropdown.value = myTextBox.value 
    }) 

    myDropdown.onchange = function() { 
     myTextBox.value = this.value; 
    } 
    myDropdown.value = myTextBox.value 

回答

2

我希望这肯定会解决你的需要..

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
 
<script> 
 
    $(document).ready(function(){ 
 
    $(document).on('change','#dropdown',function(){ 
 

 
     $(this).html($('option',this).sort(function(a,b) 
 
             { 
 
     if(a.text == b.text) 
 
     { 
 
      return 0; 
 
     } 
 
     if(a.text > b.text) 
 
     { 
 
      return 1; 
 
     } 
 
     else 
 
     { 
 
      return -1; 
 
     } 
 
     })); 
 

 
     var hold = $('option:selected',this).detach(); 
 
     $(this).prepend(hold); 
 
    }); 
 
    }); 
 
</script> 
 
<body> 
 

 
    <div class = "dropdowns"> 
 
    <select id = "dropdown"> 
 
     <option selected> x</option> 
 
     <option>a</option> 
 
     <option>r</option> 
 
     <option>d</option> 
 
     <option>c</option> 
 
    </select> 
 
    </div> 
 
</body>

+0

是的,这是正确的,只有我想在页面加载时(在用户选择一个选项之后)使这个选项成为第一个选项(或者选择'选项选择...')。 – user6104636

+0

所以你问,选择一个选项后,如果用户重新加载页面,你希望该选项是第一个 –

相关问题