Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

[gelöst] jQuery: Abfrage einer Checkbox in der Node-Form

Eingetragen von tfranz (125)
am 13.09.2012 - 16:35 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

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

AnhangGröße
Archiv.zip810 Bytes
‹ Distribution eines Modules mit eigenem jquery plugin? In einem Hook im eigenen Modul, wie kann ich ein array verändern? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Das man eine Checkbox

Eingetragen von torfnase (1525)
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

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich will nicht ausschliessen,

Eingetragen von tfranz (125)
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">

  • Anmelden oder Registrieren um Kommentare zu schreiben

input#edit-field-calculate-un

Eingetragen von wla (9463)
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

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für die Antwort. Ich

Eingetragen von tfranz (125)
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 ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

du mußt ja auf die änderung

Eingetragen von caw (2762)
am 14.09.2012 - 15:02 Uhr

du mußt ja auf die änderung reagieren:
http://api.jquery.com/change/

  • Anmelden oder Registrieren um Kommentare zu schreiben

Laut Deinem Link wird die

Eingetragen von tfranz (125)
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"?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich weiss gar nicht genau, ob

Eingetragen von torfnase (1525)
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");
});

  • Anmelden oder Registrieren um Kommentare zu schreiben

Laut jquery.com müsste das

Eingetragen von Exterior (2903)
am 14.09.2012 - 21:25 Uhr

Laut jquery.com müsste das change-Event bei Checkboxen funktionieren:

Zitat:

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?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Habe mal einen Testaccount

Eingetragen von tfranz (125)
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]

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Checkbox lässt sich nicht

Eingetragen von Exterior (2903)
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!).

  • Anmelden oder Registrieren um Kommentare zu schreiben

So muss es korrekt

Eingetragen von caw (2762)
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

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das

Eingetragen von tfranz (125)
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!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
Weiter

Neue Kommentare

  • Arrrrg. Nix Tabelle :-D /*
    vor 6 Tagen 14 Stunden
  • Textboxen mit Tabelle
    vor 6 Tagen 21 Stunden
  • Du sollst ja auch keine
    vor 6 Tagen 21 Stunden
  • Theme
    vor 6 Tagen 21 Stunden
  • Welches Theme benutzt du
    vor 1 Woche 3 Stunden
  • Mit Responsive Raster hatte
    vor 1 Woche 17 Stunden
  • Hallo Alex,um das Häkchen
    vor 1 Woche 1 Tag
  • Modul view_unpublished
    vor 1 Woche 2 Tagen
  • Modul "override node options"
    vor 1 Woche 2 Tagen
  • Im Grunde ist dass ein
    vor 1 Woche 5 Tagen

Statistik

Beiträge im Forum: 250270
Registrierte User: 20477

Neue User:

  • Robertnobia
  • AltonRaf
  • JeffreyPaf

» Alle User anzeigen

User nach Punkten sortiert:
wla9463
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 9 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association