• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Per Checkbox die URL ändern

Nicki

New member
Hallo,

gibt es eine Möglichkeit per Checkbox die URL zu ändern. Es müsste bei aktivieren ein Parameter (filter[status]=published) angehangen werden, beim deaktivieren der Checkbox der Parameter wieder entfernt werden.

Checkbox aktiviert (Nur Verfügbare Objekte anzeigen):
Code:
http://.../index.php?filter[action]=rent&filter[status]=published

Checkbox deaktiviert (Alle Objekte anzeigen):
Code:
http://.../index.php?filter[action]=rent

Bin nicht so führend in JS. Vielleicht hat ja jemand ein kleines Beispiel für mich. :icon6: Danke!

Schöne Grüße,
Nicki
 
Hi,

ich kann dir zwar leider gerade kein Beispiel geben, aber du kannst dir mal die history.push Funktionen anschauen. Damit kannst du (in allen moderen Browsern) die "URL" verändern.


Gruß
 
Hallo,

ich habe jetzt schon mal selbst rumgebastelt. Für alle die es interessiert, hier meine grob funktionierende Lösung. Es wird nach "published" gesucht und je nachdem, ob das Wort vorhanden ist oder nicht, wird die Seite mit dem Parameter "filter[status]=published" neu aufgerufen. Vielleicht nicht optimal, aber es funktioniert. :cool:

Etwas klappt allerdings noch nicht so, wie ich es gern hätte. Zum entfernen des Parameters "filter[status]=published" setze ich den Pfad ganz zurück. Damit verliere ich allerdings alle Parameter, die eventuell noch vorhanden waren (z.B. fitler[action]=rent). Wie könnte ich es anfangen, dass nur "filter[status]=published" entfernt wird und die restliche URL erhalten bleibt. Als Idee hätte ich vielleicht die Speicherung der URL als Array oder Session?

Code:
<script>
function myFunction(){
var Url=window.location.search
var Ergebnis = Url.search(/published/);
if (Ergebnis != -1) {
window.location.assign("http://" + window.location.hostname + window.location.pathname+"?clearFilters=1");
document.getElementById("myCheckbox").checked = true;
//alert("gefunden");
} else {
window.location.assign(window.location.search+"&filter[status]=published");
document.getElementById("myCheckbox").checked = false;
//alert("not");
}
}
function myCheck(){
var Url=window.location.search
var Ergebnis = Url.search(/published/);
if (Ergebnis != -1) {
document.getElementById("myCheckbox").checked = true;
//alert("gefunden");
} else {
document.getElementById("myCheckbox").checked = false;
//alert("not");
}
}
</script>

Aufruf per Checkbox:
HTML:
<label><input id="myCheckbox" name="myCheckbox" type="checkbox" onclick="myFunction()" value=""> Nur Verfügbare Objekte anzeigen</label>

Aufruf per onload:
HTML:
<body onload="myCheck()">
 
Als Quick'n'Dirty-Lösung würde ich jetzt einfach mal sowas machen:
Code:
function myFunction(){
	var Url = window.location.search
	var Ergebnis = Url.search(/published/);
	if (Ergebnis !== -1){
		window.location.search = window.location.search.replace(/(\?|&)filter\[status\]=published/, "");
		document.getElementById("myCheckbox").checked = true;
		//alert("gefunden");
	}
	else {
		window.location.search += "&filter[status]=published");
		document.getElementById("myCheckbox").checked = false;
		//alert("not");
	}
}

function myCheck(){
	var Url = window.location.search
	var Ergebnis = Url.search(/published/);
	if (Ergebnis !== -1){
		document.getElementById("myCheckbox").checked = true;
		//alert("gefunden");
	}
	else{
		document.getElementById("myCheckbox").checked = false;
		//alert("not");
	}
}

Wenn du es ganz sauber haben willst, würde ich location.search auslesen und die GET-Daten parsen (ist leichter, als man zuerst meint). Dann kann direkt auf diesen Daten prüfen, ob der Filter gesetzt ist und auch darin den filter löschen/ändern und dann das Ganze wieder zurückparsen.

Ich hab' da mal vor einiger Zeit was dazu gemacht: http://kkjs.kkapsner.de/modules/kkjs.QueryString.js - ist hald in mein Framework eingebunden, aber du kannst dir ja mal ansehen, wie's da funktioniert.
 
Zurück
Oben