jQuery get by Id funktioniert nicht

Tommy57

Erfahrenes Mitglied
Hallo,

ich habe im Backend von Joomla ein Formular, wo ich im JavaScript Code die ID auslesen muss. Ich kann aber über die ID mit jQuery nicht auf das Element zugreifen, aber mit normalem JavaScript schon. Es ist mir ein absolutes Rätsel, woran das liegen könnte.

HTML:
<form ...>
...
<input type="text" id="jform_id" name="jform[id]" value="123" ...>
...
</form>

<script type="text/javascript">
    var element;
    
    element= $('#jform_id');
    console.log(element);  // Ausgabe: null

    element= $('jform_id');
    console.log(element);   // Ausgabe: <input type="text" id="jform_id" name="jform[id]" value="123" ...>
    console.log(element.attr('value'));    // Ausgabe: null

    element = document.getElementById('jform_id');
    console.log(element );   // Ausgabe: <input type="text" id="jform_id" name="jform[id]" value="123" ...>
    console.log(element.value);    // Ausgabe: 123
</script>

Hab den Code abgeschrieben, da ich auf einem anderen System arbeite. Falls im Code oben Rechtschreibfehler sein sollten, werden diese mit Sicherheit nicht der Grund für den Fehler sein.


Es wird verlangt, dass wir mit jQuery arbeiten und ich kann mir wie gesagt den Grund für dieses Verhalten nicht erklären. Hat jemand vielleicht eine Idee, woran das liegen könnte.

Gruß, Tommy
 
Danke für die schnelle Antwort.


Oder es gibt schon ein Element, dass die ID jform_id hat, ein Element das kein Value Attribut hat.

Es gibt wirklich nur ein einziges Element mit dieser ID. Zumindest finde ich im HTML-Code kein anderes.

Entweder hast du das Problem beim Abschreiben gelöst:
http://jsfiddle.net/v2TkA/1/

Ich habe jetzt einfach mal deinen Code kopiert und bekomme die gleiche Fehlermeldung.
Code:
TypeError: element is null
- console.log("Value: "+element.val());

Ich verstehe auch nicht, warum er das Element findet, wenn ich das Raute-Zeichen weglasse ($('jform_id')). Da kann ich dann aber nicht auf das Value Attribut zugreifen.

Code:
<input id="jform_id" class="readonly" type="text" readonly="readonly" value="123" name="jform[id]">

TypeError: element.attr is not a function	
console.log(element.attr('value'));

Das Formular selber wird ja automatisch von Joomla im Backend erzeugt. Vielleicht macht Joomla da irgendwas aus Sicherheitsgründen oder so, weswegen es nicht geht.

Hier ist jetzt mal der komplette HTML Code vom ID-Feld:

HTML:
<label id="jform_id-lbl" for="jform_id" class="hasTip" title="ID::Aufnahmenummer in der Datenbank">ID</label>
<input type="text" name="jform[id]" id="jform_id" value="123" class="readonly" readonly="readonly"/>
 
Hat sich erledigt -.-

Wir sollen bei einer fertigen Joomla Applikation eine Komponente erweitern.
Da sagt man uns, dass wir jQuery verwenden müssen und es wird gar nicht eingebunden.

Toll. Das hat mich jetzt ein paar Stunden gekostet. :mad:
 

Neue Beiträge

Zurück