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 (9461)
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

  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 1 Tag 13 Stunden
  • Migrieren von D7 auf D8/ D10/ D11
    vor 2 Tagen 5 Stunden
  • melde mich mal wieder, da ich
    vor 7 Wochen 6 Tagen
  • Hey danke
    vor 8 Wochen 3 Stunden
  • Update: jetzt gibt's ein
    vor 8 Wochen 22 Stunden
  • Hallo, im Prinzip habe ich
    vor 8 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 8 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 9 Wochen 2 Tagen
  • In der entsprechenden View
    vor 9 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 9 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250235
Registrierte User: 20462

Neue User:

  • marouane.blel
  • capilclinic
  • Quabzibboter

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 21 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