[Gelöst] Javascript-Funktion in Submit aufrufen
Eingetragen von Pezor (2)
am 22.03.2011 - 10:11 Uhr in
am 22.03.2011 - 10:11 Uhr in
Hallo,
in meinem jetzigen Module habe ich ein Applet untergebracht, mit dem der Benutzer gewisse Eingaben machen kann.
Diese Eingaben sollen nach einem Submit aus dem Applet geholt werden, damit ich sie verarbeiten kann.
Mit dem Javascript:
function getResult() {
var ans = document.MyApplet.getExpression();
return ans;
}
könnte man sich die Eingabe des Benutzers aus dem Applet holen. Hier nun kurz der Code
meiner submit-Funktion:
<?php
myform_submit($form, &$form_state) {
drupal_add_js('misc/myscript.js');
}
?>
Mit drupal_add_js füge ich Drupal das Javascript hinzu, allerdings weiß ich dann nicht mehr weiter.
Ich suche nun schon mehrere Stunden erfolglos nach einer Möglichkeit wie ich die getResult()-Funktion des
Javascripts in Drupal aufrufen könnte, und mir das Ergebnis in einer Variable speichern könnte.
Bin für jede Hilfe dankbar.
Lösung: Ich hab in der Form einfach ein hidden field mit namen myinput eingefügt, und den submit button geändert:
<?php
$form['editor_fieldset']['transcribe'] = array(
'#type' => 'submit',
'#value' => t('Transcribe Formula'),
'#submit' => array('applet_submit'),
'#prefix' => '<script>
function test() {
var ans = document.MyApplet.getExpression();
var target = document.getElementsByName("myinput")[0];
target.setAttribute("value",ans);
target.value = ans;
}
</script>',
'#attributes' => array('onclick' => 'javascript: test();'),
);
?>
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo, aus drupal
am 23.03.2011 - 09:31 Uhr
Hallo,
aus drupal (Serverseite) kannst Du nicht mehr direkt auf die JavaScript-Variablen (Client-Seite) zugreifen. Du mußt also eine Möglichkeit finden die Variablen im HTML-Formular, welches an den Server übermittelt wird zu integrieren.
Theoretisch könntest Du dazu den Submit des Formulars abfangen und dabei Deine getResult-Funktion aufrufen. Mit dieser getResult-Funktion müsstest Du dann die Variablen aus dem Applet ermitteln und vielleicht in die versteckten Variablen des zu übermittelnden Formulars einfügen. Damit würden die entsprechenden Werte dann auch im drupal für die Weiterverarbeitung zur Verfügung stehen.
Eine weitere Alternative wäre die Variablen direkt aus dem Applet an eine drupal-Seite / einen Ajax-Aufruf / Was-auch-immer zu übergeben.
Gruß,
Sven
www.allsatis.de
Danke für die Hilfe, ich hab
am 23.03.2011 - 10:51 Uhr
Danke für die Hilfe, ich hab das Problem vor 2 Stunden schon gelöst. Ich werd am Nachmittag kurz posten wie es geklappt hat. Es funktioniert ähnlich wie die Lösung die du beschrieben hast.
Beste Grüße
Pezor