如何在window.location.replace之后保留相同的表单

时间:2013-09-04 18:02:00

标签: javascript jquery

我有一个带有选择下拉菜单的表单,该菜单调用一个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);
}

3 个答案:

答案 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参数。

以下是此radicand中提供的post函数:

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调用以发布所选值并动态插入生成的后续内容会不会更简单?

意见:这样您就可以使用某些过渡功能,保持地址栏网址清晰并改善用户体验(例如,无页面加载延迟/屏幕刷新)。