-1

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

3 回答 3

1

一种解决方案是从您传递的 url 中读取查询参数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);
}
于 2013-09-04T18:05:41.893 回答
1

您必须首先解析 GET 参数。

这是本文中提供的radicand一个函数:

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") );
}
于 2013-09-04T18:05:58.097 回答
0

我会赞成 ComFreek简洁而有用的答案,但缺乏足够的声誉来这样做。我还会在您的帖子中评论以下问题,但同样缺乏声誉。

问题:为什么要重新加载页面?使用 jquery 或类似方法执行 ajax 调用来发布您选择的值并动态插入生成的后续内容不是更简单吗?

意见:这将使您能够使用一些转换,保持地址栏 url 干净并改善用户体验(例如,没有页面加载延迟/屏幕刷新)。

于 2013-09-04T18:26:27.687 回答