Auf variables Array zugreifen
unifier
- javascript
2 1UnitedPower0 unifier
0 gast_420 molily
Hallo zusammen,
ich möchte gerne in einem Formular einzelne Zeilen absenden können und dieses per Jquery realisieren.
In der Zeile befinden sich zwei input-Felder, goals_home['match_id'] und goals_guest['match_id] und ein Link mit der id="match_id".
Zeile nummer 2 hätte dann zum Beispiel diesen Aufbau:
<td><input type="number" id="goal_home[2]" class="goal"/></td>
<td><input type="number" id="goal_guest[2]" class="goal"/></td>
<td><a href="#"><img src="layout/btn_submit_goal.png" class="submit_goal" id="2"/></a></td>
Nun habe ich folgendes in Javascript programmiert:
<script type="text/javascript">
$(function(){
$(".submit_goal").click(function (){
var match = $(this).attr("id");
var goal_home = $("#goal_home["+match+"]").val()
var goal_guest = $("#goal_guest["+match+"]").val()
$.post("controll_open_result_single.php", { match_id: match, goal_home: goal_home, goal_guest: goal_guest } );
});
});
</script>
Allerdings hat er bei dem Zugriff auf das jeweilige Array Probleme.
Wäre nett wenn mir dort einer weiterhelfen könnte.
Danke
unifier
Meine Herren,
Allerdings hat er bei dem Zugriff auf das jeweilige Array Probleme.
Eckige Klammern in CSS-Selektoren und damit auch in jQuery-Selektoren haben eine bestimmte Bedeutung.
Deshalb muss die sie escapen. In der Regel geschicht das mit einem Backslash, jetzt haben wir die Besonderheit, dass der Backslash in Javascript-Strings selbst eine besondere Bedeutung hat, er ist nämlich das escape-Zeichen. In deinem Fall bedeutet das, dass du die eckigen Klammern doppelt escapen musst. Also:
var goal_home = $("#goal_home\\["+match+"\\]").val();
Super, das war es. Danke für de schnelle Hilfe
Gruß
unifier
<td><input type="number" id="goal_home[2]" class="goal"/></td>
<td><input type="number" id="goal_guest[2]" class="goal"/></td>
<td><a href="#"><img src="layout/btn_submit_goal.png" class="submit_goal" id="2"/></a></td>
vgl. <http://de.selfhtml.org/html/referenz/attribute.htm#id_idref_name@title=ID>: "Der Wert eines solchen Attributs muss mit einem Buchstaben A-Z oder a-z beginnen, und darf in der weiteren Zeichenkette ebenfalls nur Buchstaben A-Z und a-z, Ziffern 0-9, Bindestriche (-), Unterstriche (\_), Doppelpunkte (:) und Punkte (.) enthalten"
Eine Ziffer als ID oder eine ID mit eckigen Klammern passt nicht!
Meine Herren,
<td><input type="number" id="goal_home[2]" class="goal"/></td>
<td><input type="number" id="goal_guest[2]" class="goal"/></td>
<td><a href="#"><img src="layout/btn_submit_goal.png" class="submit_goal" id="2"/></a></td>
>
> vgl. <http://de.selfhtml.org/html/referenz/attribute.htm#id_idref_name@title=ID>: "Der Wert eines solchen Attributs muss mit einem Buchstaben A-Z oder a-z beginnen, und darf in der weiteren Zeichenkette ebenfalls nur Buchstaben A-Z und a-z, Ziffern 0-9, Bindestriche (-), Unterstriche (\_), Doppelpunkte (:) und Punkte (.) enthalten"
>
> Eine Ziffer als ID oder eine ID mit eckigen Klammern passt nicht!
HTML5 ist da weniger strikt:
["The value \[of an id-attribute\] \[...\] must contain at least one character. The value must not contain any space characters."](http://www.w3.org/TR/html51/dom.html#the-id-attribute)
--
Hey Girl,
i wish you were asynchronous, so you'd give me a callback.
Hallo,
var goal_guest = $("#goal_guest["+match+"]").val()
Eckige Klammern haben in einem jQuery-Selektor eine bestimmte Bedeutung, es ist nämlich ein Attributselektor. Da kein Attribut »2« bei dem Element existiert, gibt $("#goal_home["+match+"]") ein leeres jQuery-Objekt zurück (= die Suche ergibt keine Treffer).
Ich würde hier ganz Old-School arbeiten:
document.getElementById('…').value
Grüße,
Mathias