LoginSignup
2
0

More than 5 years have passed since last update.

GETのプルダウンメニューで選択した項目にselectedをつけたい場合

Last updated at Posted at 2017-01-18

プルダウンメニューによって表示の切り替えを行う場合、
切り替わった後の画面で同じプルダウンメニューを表示するなら、
選択した項目を選択状態にしてあげるのが適切です。

index.html
<form id="fileSelectForm" class="fileSelectForm" action="" method="get">
    <select id="file_select" name="file_select">
    <option value="2017_01">2017年01月</option>
    <option value="2016_12">2016年12月</option>
    <option value="2016_11">2016年11月</option>
    <option value="2016_10">2016年10月</option>
    </select>
</form>

optionにselectedをつける事で選択状態となりますが、
POSTではなく、GETの場合にはjavascriptで切り替えてあげます。

index.html
    <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha256-/SIrNqv8h6QGKDuNoLGA4iret+kyesCkHGzVUUV0shc=" crossorigin="anonymous"></script>
    <script>
    /**
    *  GETパラメータを配列にして返す
    *  @return     パラメータのObject
    * http://qiita.com/Evolutor_web/items/c9b940f752883676b35d
    */
    function getUrlVars(){
        var vars = {};
        var param = location.search.substring(1).split('&');
        for(var i = 0; i < param.length; i++) {
            var keySearch = param[i].search(/=/);
            var key = '';
            if(keySearch != -1) key = param[i].slice(0, keySearch);
            var val = param[i].slice(param[i].indexOf('=', 0) + 1);
            if(key != '') vars[key] = decodeURI(val);
        }
        return vars;
    }
    $(function(){
        var val = getUrlVars();
        var file_select = val.file_select;
        if(file_select){
            var now_select = $("#file_select").find("option[value=\"" + file_select + "\"]");
            $(now_select).prop('selected',true);
        }
    });
    $(function(){
        $("#fileSelectForm").change(function(){
            $(this).submit();
        });
    });
    </script>

GETパラメータの取得については、以下記事を参考にしています。、
http://qiita.com/Evolutor_web/items/c9b940f752883676b35d

GETパラメータを取得して、valueと同じだったら、それにselectedをつけるというものです。
getUrlVars() でクエリーが配列で取得されるので、
val.file_select でパラメーターを指定し、もしパラメーターがあれば、
$(now_select).prop('selected',true) でselectedを付与してあげます。

意外と使う事が多いかもしれません。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0