[gelöst] jQuery: Abfrage einer Checkbox in der Node-Form
am 13.09.2012 - 16:35 Uhr in
Hallo,
ich habe eine – hoffentlich – kleine Frage in Verbindung mit jQuery:
Ich möchte den Status einer Checkbox in der Node-Add-Form abfragen und habe dazu ein kleines Modul geschrieben (siehe Anhang).
Die Checkbox sieht im Markup wie folgt aus:
<div class="form-item form-type-checkbox form-item-field-calculate-und">
<input type="checkbox" class="form-checkbox" value="1" name="field_calculate[und]" id="edit-field-calculate-und">
<label for="edit-field-calculate-und" class="option">Calculate </label></div>Das Modul:
<?php
function java_form_alter(&$form, $form_state, $form_id){
if($form_id == 'article_node_form'){
$form['field_calculate']['#after_build'] = array('_load_my_javascript');
}
}
function _load_my_javascript($element){
drupal_add_js( drupal_get_path('module', 'java') . '/java.js');
return($element);
}
?>Die Javascript-Funktion, welche ich lade:
(function ($) {
alert("START");
$('#edit-field-calculate-und:checkbox').change(function() {
alert("KLICK");
});
})(jQuery);Nach dem Aufrufen einer Node-Form über /node/add/article erscheint zuerst die jQuery-Alertbox "START": das Script wird also geladen.
Nur bekomme ich keine Rückmeldung, sobald ich auf die Checkbox klicke ... was ich aber gerne hätte ...
Wo liegt mein Denkfehler?
Danke für jeden Hinweis,
Tobias
| Anhang | Größe |
|---|---|
| Archiv.zip | 810 Bytes |
- Anmelden oder Registrieren um Kommentare zu schreiben

Das man eine Checkbox
am 13.09.2012 - 18:50 Uhr
Das man eine Checkbox so
$('#edit-field-calculate-und:checkbox').anspricht, habe ich noch nie gesehen.
Ich bin mir ziemlich sicher, dass der Selektor so nicht richtig ist.
Gruß
Berthold
Ich will nicht ausschliessen,
am 13.09.2012 - 21:44 Uhr
Ich will nicht ausschliessen, dass der Selektor nicht stimmt und habe deshalb auch andere Varianten ausprobiert, welche aber ebenfalls nicht funktioniert haben ... ich vermute, dass der Fehler an einer anderen Stelle liegt.
Wie wäre denn der korrekte Selektor dafür?
<input type="checkbox" class="form-checkbox" value="1" name="field_calculate[und]" id="edit-field-calculate-und">input#edit-field-calculate-un
am 13.09.2012 - 22:15 Uhr
input#edit-field-calculate-und ist auf jeden Fall eindeutig, aber die ID alleine also #edit-field-calculate-und müsste schon reichen.
Beste Grüße
Werner
Danke für die Antwort. Ich
am 14.09.2012 - 10:26 Uhr
Danke für die Antwort.
Ich habe beides ausprobiert – aber beides ohne Erfolg: ich kann auf der Checkbox rumklicken wie ich will, es kommt keine weitere Alert-Box "KLICK"...
Kann es mit der Reihenfolge zu tun haben, wann das Script geladen wird?
Die erste Alert-Box "START" erscheint, bevor überhaupt die Inhalte der Seite zu sehen sind ...
du mußt ja auf die änderung
am 14.09.2012 - 15:02 Uhr
du mußt ja auf die änderung reagieren:
http://api.jquery.com/change/
Laut Deinem Link wird die
am 14.09.2012 - 18:55 Uhr
Laut Deinem Link wird die Funktion so aufgerufen:
$('.target').change(function() {alert('Handler for .change() called.');
});
Bei mir sieht es so aus:
$('input#edit-field-calculate-und').change(function() {alert("Klick");
});
Wo liegt der Unterschied?
Oder was meinst Du mit "auf änderung reagieren"?
Ich weiss gar nicht genau, ob
am 14.09.2012 - 20:34 Uhr
Ich weiss gar nicht genau, ob die Checkbox überhaupt einen change-Event "feuert".
Nimm doch erst einmal den Click-Event.
Den müsste sie auf alle Fälle "feuern".
$('#edit-field-calculate-und').click(function() {alert("Klick");
});
Laut jquery.com müsste das
am 14.09.2012 - 21:25 Uhr
Laut jquery.com müsste das change-Event bei Checkboxen funktionieren:
The change event is sent to an element when its value changes. This event is limited to elements, boxes and elements. For select boxes, checkboxes, and radio buttons, the event is fired immediately when the user makes a selection with the mouse, but for the other element types the event is deferred until the element loses focus.
Hast du einen Link zu der Seite?
Habe mal einen Testaccount
am 15.09.2012 - 08:14 Uhr
Zur Zeit ist folgendes Script aktiv:
(function ($) {alert("Start");
$('#edit-field-calculate-und').click(function() {
alert("Klick");
});
$('input#edit-field-calculate-und').change(function() {
alert("Change");
});
})(jQuery);
DANKE für Eure Unterstützung!
[EDIT: Zugangsdaten entfernt]
Die Checkbox lässt sich nicht
am 14.09.2012 - 23:14 Uhr
Die Checkbox lässt sich nicht ansprechen... Nimm mal das "alert('Start');" raus, das braucht kein Mensch. Und dann bau dein Script mal ordentlich, mit document-ready und so, damit gewartet wird, dass die Seite geladen ist. Schau dir mal andere Modul-Javascripte an, wie's dort gemacht ist (mehrere anschauen!).
So muss es korrekt
am 15.09.2012 - 05:45 Uhr
So muss es korrekt lauten:
jQuery(document).ready(function($) {
$('#edit-field-calculate-und').change(function() {
alert('Handler for .change() called.');
});
});
Habe ich selbst getestet und funzt
Das
am 15.09.2012 - 08:13 Uhr
Das war's!!
"Query(document).ready()" scheint der Trick gewesen zu sein – der obere Code funktioniert!
War mir echt eine große Hilfe ... :-)
Vielen Dank!!