Kombination PHP und Javascript (jQuery)
Enrico
- programmiertechnik
Hallo,
wieder beschäftigt mich ein Problem.
Ich lasse in einer Datei dynamisch über PHP, d.h. in Abhängigkeit übergebener $_POST-Variablen, versteckte <input>-Felder aufbauen, um darin die jeweils benötigten Informationen abzulegen.
In dieser Seite werden, ebenfalls über PHP, eine Javascript-Funktion, die auf jQuery zurückgreift, sowie dynamische 2 Auswahllisten aufgebaut:
1. Auswahllisten
if (isset ($GroessenPreise))
{
$Optionen = explode ("#", $GroessenPreise);
$Auswahllisten .= '<select name="AuswahlGroesse" id="Groesse" class="Auswahlliste" size="1" onchange="AuswahlErmitteln(\'AuswahlGroesse\');">';
$Auswahllisten .= '<option value="">Größe ?</option>';
for ($j = 0; $j < count ($Optionen); $j += 2)
{
$Auswahllisten .= '<option value="' . $Optionen[$j + 1] . '">' . $Optionen[$j] . '</option>';
}
$Auswahllisten .= '</select>';
}
if (isset ($Farbenzuschlaege))
{
$Optionen = explode ("|", $Farbenzuschlaege);
$Auswahllisten .= '<select name="AuswahlFarbe" id="Farbe" class="Auswahlliste" size="1" onchange="AuswahlErmitteln(\'AuswahlFarbe\');">';
$Auswahllisten .= '<option value="">Farbe ?</option>';
for ($j = 0; $j < count ($Optionen); $j += 2)
{
$Auswahllisten .= '<option value="' . $Optionen[$j + 1] . '">' . $Optionen[$j] . '</option>';
}
$Auswahllisten .= '</select>';
}
2. Javascript-Funktion
[code lang=php]
if (isset ($Aktion))
{
if ($Aktion == "ArtikelDetails")
{
echo '<script type="text/javascript">';
echo 'function AuswahlErmitteln(Element)';
echo '{';
echo 'Auswahl = $("[name=Element]:selected").text();';
echo 'Element = Element.replace("Auswahl", "");';
echo '$("[name=Element]").val(Auswahl);';
echo '}';
echo '</script>';
}
}
[\code]
Beide Auswahllisten rufen bei Treffen/Änderung einer Auswahl ("onchange") die Funktion "AuswahlErmitteln" auf und übergeben ihr den Namen der Auswahlliste.
Die Auswahllisten heissen "AuswahlGroesse" und "AuswahlFarbe".
Hier soll der Text der ausgewählten Option ermittelt und zwei versteckten Textfeldern übergeben werden, die ich "Groesse" und "Farbe" benannt habe.
Ich möchte deshalb auf Javascript zurückgreifen, da die obige Funktion später bei Änderungen gleich den Preis ermitteln soll (ToDo).
Derzeit stehe ich aber vor dem Problem, dass die ermittelte Auswahl immer leer ist.
Muss ich die Variable "Element" in der Zeile "Auswahl = $("[name=Element]:selected").text();" anders übergeben oder wo liegt der Fehler?
Vielen Dank für eure Hilfe und Gruß
Enrico
PS: Keine Ahnung, warum mein Formatierungskennzeichen bei der Javascript-Funktion ignoriert wird...
Hallo,
wieder beschäftigt mich ein Problem.
Ich lasse in einer Datei dynamisch über PHP, d.h. in Abhängigkeit übergebener $_POST-Variablen, versteckte <input>-Felder aufbauen, um darin die jeweils benötigten Informationen abzulegen.
ich verstehe nicht mal den ersten Satz. Ich erahne VAGE, was du tust, aber hier wimmelt es nur so fachlich irreführenden Begrifflichkeiten.
=> wie geht das, in einer Datei irgendwas aufbauen? Wie machst du das?
=> was sind _versteckte_ <input>-Felder? Du meinst Input-Elemente des Typs hidden?
=> dynamisch über PHP.... ich erahne es, kann es aber kaum greifen.
In dieser Seite werden, ebenfalls über PHP, eine Javascript-Funktion, die auf jQuery zurückgreift, sowie dynamische 2 Auswahllisten aufgebaut:
=> JavaScript bitte!
=> Welche Seiten denn nu? Ich dachte, du baust in einer _Datei_ irgendetwas auf?
=> und wieder wird irgendetwas dynamisch aufgebaut...
auf den Code gehe ich jetzt nicht ein, der ist schlecht lesbar und nicht kommentiert. Sorry, das tue ich mir nicht an.
Grundsätzlich, beschäftige dich erstmal mit den Grundlagen. So kann man dir nicht wirklich helfen. Wenn du dann nicht weiterkommst, teile dein Problem in kleinere Häppchen auf. Diese schmecken den Usern besser. Würze diese Häppchen mit Kommentaren, und viele User werden sich darauf stürzen.
DANN kann man dir auch helfen und du lernst noch was dabei. Mache dir auch nochmal über die Benennung deiner Konstrukte Gedanken. Denke hierbei an Lesbarkeit und Sprache.
Viele Grüße
Kepheus
Tach!
echo 'function AuswahlErmitteln(Element)';
echo '{';
echo 'Auswahl = $("[name=Element]:selected").text();';
echo 'Element = Element.replace("Auswahl", "");';
Muss ich die Variable "Element" in der Zeile "Auswahl = $("[name=Element]:selected").text();" anders übergeben oder wo liegt der Fehler?
Aus Javascript-Sicht steht in der dritten zitierten Zeile ein String-Literal, das am ersten " anfängt und bis zum zweiten " geht. Javascript kennt keine Variablennamenerkennung in String-Literalen. Wenn da der Inhalt von Element stehen soll, muss der String zusammengestückelt werden.
Übrigens kann man längere Texte in PHP auch mit der Heredoc- oder der Nowdoc-Syntax verfassen.
dedlfix.
Hallo dedlfix,
danke für Deine rasche Antwort.
Die Strings sind noch mein Untergang ;-)
Also, mit zerstückeln meinst Du, die zu übergebende Variable aus der Zuweisung herauszunehmen?
echo 'Auswahl = $("[name=" + Element + "]:selected").text();';
"Element" wird korrekt übergeben, das habe ich mit einem alert-Befehl kontrolliert, dennoch erhalte ich immer noch keinen Wert.
Gruß
Enrico
Ist ja der Wahnsinn...
Es lag nur an einem dermaßen unbedeutend erscheinenden fehlenden Leerzeichen vor "selected".
Richtig ist somit: echo 'Auswahl = $("[name=" + Element + "] :selected").text();';
Das muss man erst mal herausfinden ^^
Gruß,
Enrico
Tach!
Es lag nur an einem dermaßen unbedeutend erscheinenden fehlenden Leerzeichen vor "selected".
Richtig ist somit: echo 'Auswahl = $("[name=" + Element + "] :selected").text();';
Die Selektoren wirken ähnlich wie bei CSS. Mit Leerzeichen werden zwei Elemente berücksichtigt (das zweite als Nachfahre vom ersten), ohne Leerzeichen nur eins.
dedlfix.