32

我有一个示例 URL,例如:

http://domain.com/Documents/?page=1&name=Dave&date=2011-01-01

查询字符串包含当前页码和两个附加过滤器(名称和日期)。

使用以下 URL 解析器:https ://github.com/allmarkedup/purl我可以访问 URL 的某些部分,例如页码。

我正在尝试创建一种方式,让用户能够在文本框中输入数字,然后加载该页码,同时保持所有其他查询字符串不变。

$(document).ready(function () {

        $('.pageNum').live('keyup', function (e) {
            e.preventDefault();
            if (e.which == 13) {

                var currentUrl = window.location.href;

                var parsedUrl = $.url(currentUrl);

                var currentPageNum = parsedUrl.param('page');

                var newPageNum = $(this).val();

                var newUrl = //

                window.location.href = newUrl;

            }
        });

    });

因此,当用户在 pageNum 文本框上点击返回时,它将获取当前页面 url,对其进行解析,然后找出当前页码,然后我需要一种方法将页码的值替换为文本框中的新值创建一个新的 url,然后最后使用这个新的 url 刷新页面。

是否可以更改参数值然后将其重新添加?

注意:附加参数可以是任何东西,所以我不能手动将它们添加到带有新页码的路径名中!

4

2 回答 2

58

如果只需要修改页码可以替换:

var newUrl = location.href.replace("page="+currentPageNum, "page="+newPageNum);
于 2013-06-20T11:04:45.303 回答
33

不带参数使用的purls$.params()将为您提供参数的键值对象。

jQuerys$.param()将从提供的对象/数组构建一个查询字符串。

var params = parsedUrl.param();
delete params["page"];

var newUrl = "?page=" + $(this).val() + "&" + $.param(params);

更新
我不知道为什么我delete在这里使用...

var params = parsedUrl.param();
params["page"] = $(this).val();

var newUrl = "?" + $.param(params);
于 2013-06-20T11:03:40.303 回答