LoginSignup
4
3

More than 5 years have passed since last update.

method="GET"なformのactionにクエリパラメータ付きURLを使う

Last updated at Posted at 2013-01-17

var getQueryParams = function(url){
    if( url.length < 1 ){
        return {};
    }
    var queryStr = url.slice(url.indexOf('?')+1);
    if(queryStr.length < 1){
        return {};
    }
    if(queryStr.indexOf('#')!==-1){
        queryStr = queryStr.slice(0, queryStr.indexOf('#'));
    }
    var query_a = queryStr.split('&');
    if(query_a.length < 1){
        return {};
    }
    var queryObj = {};
    for(var i=0; i<query_a.length; i++){
        var query = query_a[i];
        var kv = query.split('=');
        queryObj[kv[0]] = kv[1];
    }
    return queryObj;
};

var queryToHidden = function($formObj){
    var url = $formObj.attr('action');
    var queryParams = getQueryParams(url);
    var hash;
    if(url.indexOf('#')!==-1){
        hash = url.slice(url.indexOf('#'));
    }
    for(var name in queryParams){
        var input = $("<input>").attr("type", "hidden").attr("name", name).val(queryParams[name]);
        $formObj.append(input);
    }

    url = url.slice(0, url.indexOf('?'));
    url = (hash)? url+hash: url;
    $formObj.attr("action", url);
};

//methodがGETのformは自動でqueryToHidden
$(function(){
    $("form[method=GET]").submit(function(){
        queryToHidden($(this));
        return true;
    });
});

クエリパラメータをinput[type=hidden]に変換してsubmitします。

4
3
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
4
3