[gelöst] JS für Formular-Label entfernen
am 02.01.2011 - 02:12 Uhr in
Hi Leute, ich stehe gerade irgendwie auf dem Schlauch -,-'
Ich habe in einem Modul mittels Form API ein Textfeld integriert, in welches ein Datum eingegeben werden soll.
Um es dem Nutzer einfacher zu machen, habe ich noch einen jQuery-Datepicker eingebunden, welcher bei einem Klick in das Feld öffnet. Das funktioniert soweit auch alles problemlos.
Das Problem ist nun folgendes:
Für das Formular liefert Drupal diesen HTML-Code:
<div id="edit-datum-wrapper" class="form-item">
<label id="label-edit-datum" for="edit-datum">Datum: </label>
<input type="text" class="form-text mymodule-has-datepicker hasDatepicker" value="02.01.2011" size="60" id="edit-datum" name="datum" maxlength="128">
<div class="description">Beschreibung</div>
</div>
Wenn man nun auf das Label über dem Feld klickt, öffnet sich der Datepicker ebenfalls! Und ich habe gerade keine Ahnung, wie ich das umgehen kann. Der Container für das Label hat leider eine Breite von 100%. Das heißt, wenn man irgendwo auf Höhe des Labels ins Leere klickt, öffnet sich der Datepicker.
Ich habe jetzt schon versucht, den Labels über theme_form_element eine ID zu geben (siehe Code oben) und wollte dann in der JS-Datei ein $('#label-edit-datum').unbind()
machen, aber das hat nicht funktioniert.
Ich könnte natürlich über die ID die Breite des Label-Containers reduzieren, damit das Problem nicht mehr auftaucht, dass man ins Leere klickt und der Datepicker ploppt auf. Aber mir wäre es lieber, wenn bei einem Klick auf das Label schlicht gar nichts passiert.
Weiß jemand weiter? Ich bin nämlich gerade mit meinem Latein am Ende :(
- Anmelden oder Registrieren um Kommentare zu schreiben
Label
am 02.01.2011 - 11:37 Uhr
Hallo.
Wenn man nun auf das Label über dem Feld klickt, öffnet sich der Datepicker ebenfalls!
Ja, das ist auch korrekt so. Ein Klick auf ein Label, welches an ein Textfeld "gebunden" ist, entspricht einem Klick direkt in das Feld.
Wenn Du das Attribut
for
aus der Definition des Labels entfernst, ist das Label auch nicht mehr an das Textfeld gebunden und Ereignisse des Feldes werden nicht mehr bei einem Klick auf das Label ausgeführt.Eventuell funktioniert das auch schnell und einfach über js:
$('#label-edit-datum').removeAttr('for');
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Cool, danke :) Da könnte ich
am 02.01.2011 - 18:53 Uhr
Cool, danke :) Da könnte ich das
for
auch gleich in der Theme-Funktion raus nehmen.Momentan habe ich es so gelöst:
$('#label-edit-datum').click(function() { return false; } );
Funktioniert auch, aber evtl. werde ich doch den Weg gehen, das
for-Attribut
zu entfernen. Hätte das sonst noch irgendwelche Auswirkungen? Benötigt Drupal das for-Attribut allgemein für etwas?HTML-Attribut
am 02.01.2011 - 18:59 Uhr
Benötigt Drupal das for-Attribut allgemein für etwas?
Nein, das ist reines HTML und wird auch nur für die Zuordnung des Labels zum entsprechenden Feld verwendet. Drupal hat damit rein gar nichts zu tun.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Ok, vielen Dank :)
am 02.01.2011 - 19:05 Uhr
Ok, vielen Dank :)