Mam menu rozwijane, które pełniło podwójną rolę. Użytkownik może przejść bezpośrednio do strony (http://mysite/events/Pages/default.aspx) i skorzystać z menu rozwijanego lub najpierw przeprowadzić wyszukiwanie, a następnie filtrować wyniki wyszukiwania, wybierając menu rozwijane. Pierwszy przypadek URL będzie jak http://mysite/events/Pages/default.aspx?hos=Carmel i drugim przypadku URL http://mysite/events/Pages/default.aspx?kwd=health&type=Events&hos=Carmel To, co robię teraz, ale zachowuje się dziwnie i robi czegoś takiego do adresu http://mysite.events/Pages/default.aspx?hos=Crown&hos=CarmelZastąp wartość kwerendy adresu URL przy zmianie listy rozwijanej
Więc jeśli wybrany użytkownik karmel z rozwijalnej pierwszy raz i zdecydował, że chce poszukać Indianapolis, wtedy powinien albo zastąpić "Carmel" przez Indianapolis, albo zastąpić całe querstring "& hos = Carmel" z "& hos = Indianapolis" dla drugiego przypadku i "? hos = Carmel "z"? Hos = Indianapolis "dla pierwszego scenariusza
$(".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(); }
)};
Znalazłem fajny kod, który używa wyrażenia regularnego do obsługi kwerendy, ale nie rozumiem, jak działa regex. Jak mogę użyć czegoś takiego jak poniżej w moim przypadku?
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;
}
Overlooked rzeczywiście odpowiedział na pytanie - być może warto przenieść swoją odpowiedź się przed wyjaśnieniem – mplungjan
@mplungjan dobry punkt. Poprawiono moją odpowiedź, sugerując: –
Sugeruję także zmianę window.location ponieważ window.location.href jest reprezentacją ciągów bieżącego adresu URL - dlatego zmień the.href, ale ustaw obiekt lokalizacji – mplungjan