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します。