Wert per jQuery abfragen
Achot
- jquery
- php
0 Tabellenkalk0 Achot
0 Rolf b
Hallo,
ich habe ein Feld
<select name="rechnungsadresse[1][id]" id="rechnungsadresse[1][id]>
und habe dazu folgenden jQuery Code
<?php for ($i = 1; $i <= $anzahl; $i++) { ?>
var updateSelect = function () {
$("#rechnungs_daten[<?php echo $i;?>][id]").load("inc/auslesen-rechnungsadresse.php", {rechnungsadresse: $('#rechnungsadresse[<?php echo $i;?>][id]').val()});
};
$("#rechnungsadresse[<?php echo $i;?>][id]").change(updateSelect);
<?php } ?>
Es tut sich leider nichts. Auch wird mir kein Fehler ausgegeben. Könnt ihr mir sagen, wo der Fehler ist?
Hallo,
Könnt ihr mir sagen, wo der Fehler ist?
In deinem Konzept. Kannst du erstmal ohne Code beschreiben was du erreichen möchtest?
Gruß
Kalk
Hallo,
ich habe ein bzw. mehrere Dropdown-Felder wo ich eine Adresse auswählen kann. Diese kennzeichne ich über
name="adresse[<?php echo $i;?>][id]"
Wenn eine Adresse ausgewählt wurde, soll im Feld
<div id="rechnungs_daten[<?php echo $i;?>]"></div>
die dazugehörige Adresse ausgegeben werden.
Hallo,
dein Ansatz, in einer Schleife für jeden Datensatz eine Funktion anzulegen ist jedenfalls Quatsch. Du benötigst eine Funktion, der du die Datensatznummer übergibst und die dann den entsprechenden Datensatz zurückliefert.
Gruß
Kalk
Leg einen Container um die Eingabefelder und registriere das Change-Event dort. Es blubbert von select dahin hoch.
Deiner Handler-Funktion gibst Du einen Parameter namens event
. Darin findest Du das Objekt, mit dem jQuery Dich über die Einzelheiten des Events informiert. Das select, das sich geändert hat, bekommst Du per event.target.
Dein Code funktioniert deswegen nicht, weil [] in einer ID zwar erlaubt ist, von jQuery aber als Attributselektor interpretiert wird. Wenn Du mit jQuery arbeiten willst, lass diese Zeichen aus IDs weg (im name ist das was anderes, da brauchst Du die eckigen Klammern damit PHP dir ein Array unter _GET bzw _POST bereitstellt). Nimm als ID z.B. rechnungsadresse_1
oder rechnungsadresse_1
, aber mit $("# rechnungsadresse[1]") fragst Du jQuery nach einem Element mit id='rechnungsadresse', das ein Attribut namens '1' hat.
Rolf
Hallo Rolf,
Dein Code funktioniert deswegen nicht, weil [] in einer ID zwar erlaubt ist, von jQuery aber als Attributselektor interpretiert wird. Wenn Du mit jQuery arbeiten willst, lass diese Zeichen aus IDs weg […]
Kann man nicht auch alternativ an jQuery vorbei mit document.getElementByID
hantieren?
Gruß
Julius
Natürlich kann man das. Damit gibt man dann aber die knappe jQuery-Syntax auf, und man vermischt jQuery und direkten DOM Zugriff. Wenn man mit jQuery erstmal anfängt, sollte man es auch konsequent nutzen.
Und es gibt ja auch Stimmen, die vorschlagen, man sollte generell querySelector statt getElementById verwenden, um ein einheitliches API zu haben. Oder war's nur eine Stimme, die aber laut? Weiß grad nicht mehr... ;-)
Rolf
Nachtrag: Man kann auch escapen, hier ist die Spec.
Das komplizierte ist nur, dass man in JS doppelt escapen muss, also z.B.
$("#rechnungsadresse\\[1\\]\\[id\\]").load(...)
weil zunächst mal Javascript das \ als Escape interpretiert. Und hier im Forum muss ich dann vierfach escapen... ohje.
Hallo Rolf,
Natürlich kann man das. Damit gibt man dann aber die knappe jQuery-Syntax auf, und man vermischt jQuery und direkten DOM Zugriff. Wenn man mit jQuery erstmal anfängt, sollte man es auch konsequent nutzen.
Konsistenz, ist ja logisch.
Und es gibt ja auch Stimmen, die vorschlagen, man sollte generell querySelector statt getElementById verwenden, um ein einheitliches API zu haben. Oder war's nur eine Stimme, die aber laut? Weiß grad nicht mehr... ;-)
Ich habs mitbekommen, das war irgendwo in dem Monster-Thread zu den JavaScript-Tutorials im Wiki...
Außer dem Verlust Konsistenz (keine Selektoren im CSS-Stil) hat man aber wohl keine wirklichen Nachteile, wenn man es nicht macht.
Nachtrag: Man kann auch escapen, hier ist die Spec.
Das komplizierte ist nur, dass man in JS doppelt escapen muss, also z.B.
$("#rechnungsadresse\\[1\\]\\[id\\]").load(...)
Autsch.
weil zunächst mal Javascript das \ als Escape interpretiert. Und hier im Forum muss ich dann vierfach escapen... ohje.
Autsch. Autsch.
Gruß
Julius
Autsch.
Autsch. Autsch.
Sorry. *pflaster reich*
Rolf
Hallo Rolf,
fällt mir gerade erst ein; ein inline-Codeblock erspart dir das Escapen: also $("#rechnungsadresse\\[1\\]\\[id\\]").load(...)
statt $("#rechnungsadresse\[1\]\[id\]").load(...)
Gruß
Julius