• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

%20 mit space ersetzen

AzRaIL

Mitglied
Nabend,

Habe auf einer Seite einige Links mit denen ich bestimmte Parameter über die URL übergebe.
Bsp.:

<a href="service?input1=Test">Füge "Test" in Inputfeld ein</a>

Dazu benutze ich folgende Funktion in jQuery:

Code:
function setzeInhalt() {
        jQuery('input[type=text]').each(function(index) {
            jQuery('input[id="' + hash[0] + '"]').val(hash[1]);
        });
}

Die Funktion rufe ich beim Seitenladen auf wobei hash[0] den Teil nach dem ? und vor dem = darstellt und hash[1] den Teil nach dem = (Ist in einer anderen Funktion definiert)
Es wird auch alles korrekt eingetragen in das jeweilige Inputfeld.

Das Problem ist nur wenn ich eine Leerzeile über die URL übergebe wird diese mit %20 ersetzt (was auch richtig sein sollte). Jedoch dann nicht mehr zurück dekodiert?! sondern so als %20 in das Inputfeld eingetragen.

Online finde ich bloß Beiträge dazu dass sowas automatisch gemacht wird und ich da gar nicht eingreifen sollte...

Jemand ne Idee?
 
Werbung:
Also liest du URL-Parameter aus, setzt du Parameter oder beides. So richtig werde ich daraus nicht schlau.

Aber angenommen, du würdest Parameter auslesen und dir damit deine Inputs erstellen, kannst du doch Abfragen einbauen:
Code:
wenn (der URL-Parameter gesetzt ist &&
das erste Zeichen des Parameters kein '%' ist)
  Standardoperation
ansonsten
  Fallback
 
btw. wenn du schon Funktionen verwendest, dann gewöhne dich gleich an anonyme. Wenn du dich später mal mit JS Patterns auseinandersetzt, stolperst du da ständig drüber.

Code:
var setzeInhalt = function() {
// ........
};

setzeInhalt();
 
Werbung:
Also liest du URL-Parameter aus, setzt du Parameter oder beides. So richtig werde ich daraus nicht schlau.

Naja mal angenommen ich habe auf www.root.com/formular ein Inputfeld in das ich etwas einfügen lassen will. Dies tue ich indem ich auf www.root.com/service einen Link anklicke.

<a href="www.root.com/formular?inputfeld1=ausgabe1">Trage etwas in das Inputfeld ein</a>

Durch eine Funktion wird nun die URL gesplittet und die einzelnen Werte werden in einem Array gespeichert.
In diesem Beispiel:
hash[0] hat den Wert "inputfeld1"
hash[1] hat den Wert "ausgabe1"

Jetzt wird mit der Funktion aus meinem Startpost geschaut ob auf der jeweiligen Seite ein Inputfeld mit der ID hash[0] also "inputfeld1" vorhanden ist in das dann der Wert aus hash[1] als Value reingeschrieben wird.
Das klappt ja auch soweit alles.

Nur eben wenn ich zb. etwas wie
<a href="www.root.com/formular?inputfeld1 = ausgabe 1 mit leerzeichen">Leerzeichen macht er nicht</a>
übergebe werden die Leerzeichen mit "%20" ersetzt und das wird dann auch so als Value in mein Inputfeld eingetrage und nicht mit Leerzeichen wie es eigentlich sein sollte.

Was meinst du mit anonymen Funktionen? Wo liegt denn der Unterschied bzw. der Vorteil von deinem Beispiel?

lg
 
Whitespaces in der URL werden encoded. Die gehören da auch nicht hin. Aber warum machst du nicht so was?
Code:
formular?inputfeld_1=ausgabe_1

Was die Schreibweise der Funktionen betrifft. Eigentlich macht es keinen Unterschied, aber man gewöhnt sich gleich an die objektorientierte Betrachtungsweise.
Code:
var myFunction = {
  myProperty: "foo bar",

  myMethod: function() {
    // ....
  }
}
 
Zuletzt bearbeitet:
So würde aber in meinem Inputfeld "ausgabe_1" stehen es soll aber "ausgabe 1" sein.
In der URL ist es ja auch richtig das Leerzeichen mit %20 ersetzt werden. Aber wenn es dann in ein Inputfeld eingetragen wird sollen daraus wieder Leerzeichen werden, das meine ich.
 
Werbung:
Dann ein einfaches String-Replace:
Code:
var foo = "ausgabe%201";
foo = foo.indexOf("%20") > -1 ? foo.replace("%20", " ") : foo;
 
Zuletzt bearbeitet:
Zurück
Oben