我有一个带有选择下拉菜单的表单,该菜单调用一个javascript函数,该函数使用参数作为查询字符串重新加载页面。我希望在替换页面时选择相同的下拉选项。我应该怎么做呢?
选择表格:
<select name="fill_position" id="fill_position" onchange="reloadShowForm()">
JS:
function reloadShowForm() {
var fill_pos = $('#fill_position').val();
window.location.replace(window.location.href + "&fill_position=" + fill_pos);
}
答案 0 :(得分:1)
一种解决方案是从您传递的网址window.location.href + "&fill_position=" + fill_pos
中读取查询参数。即,fill_position然后窗口onload处理结果。
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
var fillPosition = getUrlVars()["fill_position"];
if (fillPosition !== null) {
$("#fill_position").val(fillPosition);
}
答案 1 :(得分:1)
您必须首先解析GET参数。
function getURLParameter(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
}
将其添加到您的代码中,然后使用此代码段:
var fillPosition = getURLParameter("fill_position");
if (fillPosition !== null) {
$("#fill_position").val( getURLParameter("fill_position") );
}
答案 2 :(得分:0)
我会赞成 ComFreek的简明实用的答案,但缺乏足够的声誉。我也会在你的帖子中评论以下问题,但同样缺乏声誉。
问题:为什么要重新加载页面?使用jquery或类似方法执行ajax调用以发布所选值并动态插入生成的后续内容会不会更简单?
意见:这样您就可以使用某些过渡功能,保持地址栏网址清晰并改善用户体验(例如,无页面加载延迟/屏幕刷新)。