我有一个双重角色的下拉列表。用户可以直接进入页面(http://mysite/events/Pages/default.aspx)并使用下拉菜单,或者他们可以首先执行搜索,并通过选择下拉菜单进一步搜索搜索结果。 第一案URL会像 http://mysite/events/Pages/default.aspx?hos=Carmel和 第二种情况URL http://mysite/events/Pages/default.aspx?kwd=health&type=Events&hos=Carmel 这就是我现在在做什么,但它的行为怪异,并做某事像这样以URL http://mysite.events/Pages/default.aspx?hos=Crown&hos=Carmel更换下拉列表时替换URL查询字符串值
所以,如果从下拉菜单中用户选择卡梅尔的第一次,并决定他/她想寻找印第安纳波利斯,那么它应该或者用印第安纳波利斯代替'卡梅尔',或者替换第二个案例中的“hos = Carmel”和“& hos = Indianapolis”的整个querstring,并且“?hos =卡梅尔“与”?hos =印第安纳波利斯“的第一个场景
$(".hospitalDropDown").change(function(e){
var querystring=window.location.search;
var currentURL=$(location).attr('href');
if(location.href.indexOf('?') == -1) {
window.location.href= 'http://mysite/events/Pages/default.aspx'+'?hos='+$(this).val();
}
else{
window.location.href = ($(this).val() == "All Hospitals") ? 'http://mysitesite/events/Pages/default.aspx': location.href +'&hos='+ $(this).val(); }
)};
我发现了一些漂亮的代码,使用正则表达式来处理查询字符串,但我不明白正则表达式如何工作..如何在我的情况下使用下面的样子?
function replaceQueryString(url,param,value) {
var re = new RegExp("([?|&])" + param + "=.*?(&|$)","i");
if (url.match(re))
return url.replace(re,'$1' + param + "=" + value + '$2');
else
return url + '&' + param + "=" + value;
}
忽视了你实际上回答了这个问题 - 也许你应该把你的答案放在前面的解释 – mplungjan
@mplungjan好点。按照你的建议重新排列我的答案 –
另外我建议改变window.location,因为window.location.href是当前url的字符串表示 - 所以改变the.href但设置位置对象 – mplungjan