2016-04-26 13 views
-2

こんにちはフランスが常にリストの一番上にくるようにソートする国のリストが必要です。JS/Jqueryを使用してリストの国を並べ替え

以下は、リストの入力順です。

<select id="countriesList" name="countriesListName"> 
    <option value="US">USA</option> 
    <option value="DE">Germany</option> 
    <option value="FR">France</option> 
    <option value="DM">Denmark</option> 
    <option value="">Choose Countries</option> 
</select> 
+0

うん、そのダイナミックな。 –

+2

どのようにソートしますか?アルファベット順に降順であればDenkmarkが最上位に、降順であればUSAになるべきではないでしょうか? –

+0

check [demo](https://jsfiddle.net/guradio/tw7j2rfj/) – guradio

答えて

4
  1. 私は(その値が空であるので、おそらく必要ない)「を選択しCoumtriesは」
  2. 私が選ぶトップに移動トップ
  3. にフランスを移動するオプション
  4. を並べ替えますあなたはここに

$(function() { 
 
    var $list = $("#countriesList"), $opts = $("option",$list); 
 
    $opts.sort(function(a, b) { 
 
    a = $(a).val(); 
 
    b = $(b).val(); 
 
    if (a > b) return 1; 
 
    if (a < b) return -1; 
 
    return 0; 
 
    }); 
 
    $list.html($opts); 
 
    // insertBefore or prepend 
 
    $('option[value = "FR"]', $list).insertBefore($("option", $list).first()); 
 
    $('option[value = ""]', $list).insertBefore($("option", $list).first()); 
 
    $list.get(0).selectedIndex=0; // or 1 to select France 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select id="countriesList" name="countriesListName"> 
 
    <option value="US">USA</option> 
 
    <option value="DE">Germany</option> 
 
    <option value="FR">France</option> 
 
    <option value="DM">Denmark</option> 
 
    <option value="">Choose Countries</option> 
 
</select>
FRを選択することができます// "Coumtriesを選択してください"

+0

私は説明が必要だと思いますか? – guradio

+0

経験豊富な友人です。しかし、私はそれがないと思う:) :)しかし、あなたは説明をしたので、私はOPが今良いと思う:) – guradio

+0

'prependTo($ list)'を使用して、 'insertBefore()'を追加セレクタで使うことはできましたが、 。 –

0

完全なソリューション:

$(function() { 
 

 
    var options = $('#countriesList option'); 
 

 
    options.sort(function(a, b) { 
 

 
    if (a.value > b.value) { 
 

 
     return 1; 
 
    } 
 
    else if (a.value < b.value) { 
 

 
     return -1; 
 
    } 
 
    else { 
 

 
     return 0; 
 
    } 
 
    }) 
 

 
    $("#countriesList").empty().append(options); 
 

 
    // Vive la France! 
 

 
    $('#countriesList option[value="FR"]').insertAfter($('#countriesList option:first')); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="countriesList" name="countriesListName"> 
 
    <option value="US">USA</option> 
 
    <option value="DE">Germany</option> 
 
    <option value="AZ">Azerbaijan</option> 
 
    <option value="FR">France</option> 
 
    <option value="DM">Denmark</option> 
 
    <option value="">Choose Countries</option> 
 
</select>

前:

enter image description here

後:

enter image description here

Demo at sfiddle.net

+0

なぜスニペットエディタを使わないのですか? – mplungjan

0
function myFunction(country) { 
    var select = document.getElementById("selectFrance"); 
    var opts = select.options.length; 
    if ((select.options[1].value !== "FR")){ 
     for (var i=0; i<opts; i++){ 
      if (select.options[i].value == "FR"){ 
       select.insertBefore(select[i],select[1]); 
       break; 
      } 
     } 
    } 
} 
関連する問題