我有一個雙重角色的下拉列表。用戶可以直接進入頁面(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