如何使用JavaScript更改当前URL?

时间:2016-02-10 20:38:45

标签: javascript jquery html ruby-on-rails url

我有一个选择标记来选择'行的数量'显示在当前表格上。

<%=select_tag :per_page, options_for_select([10,20,50,100]....some more code...., onchange => "if (this.value) {windows.location='?per_page='+(this.value);}' %>

这很好用。但是我也有一个搜索功能,它改变了当前页面的网址,即

www.url.com/blahblah&search="input"

如何使用onchange事件在第一个&#39; blah&#39;之后插入一个字符串? 因为如果我在搜索后更改显示的行数,它会完全忽略搜索参数并再次显示每个结果。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用此代码。

&#13;
&#13;
$(document).ready(function() {
	//jquery
    $(location).attr('href');

	//pure javascript
	var pathname = window.location.pathname;
	
	// to show it in an alert window
    alert(window.location);
});
&#13;
&#13;
&#13;

答案 1 :(得分:1)

所以一开始我不清楚你的问题意味着什么,但我想我明白了。在更改下拉选项时,您希望将两个参数传递到URL中。这意味着您必须检索当前URL的搜索值。您可以通过几种方式完成此操作。

例如,您可以在页面的某处包含一个隐藏的输入,其中包含搜索参数的值,例如:

<input type="hidden" value="[the search param value]" id="search_value"/> 

然后使用

访问该值
document.getElementById("search_value").value;

您只需将其恰当地附加到您正在构建的网址上。

另一种方法是访问location.search属性,然后使用JavaScript中的RegExp或字符串操作方法解析所需值的url。 e.g。

var urlSearchParams = location.search.replace('?','').split('&');
var valueMap = {};
searchParams.forEach(function(a){
    var kv = a.split('=');
    valueMap[kv[0]] = kv[1];
});
//get the search value you want
var search = valueMap["search"];

第三种方法是检索参数并将其添加到使用rails模板系统制作的JS代码模板中。