Forum Doku Wiki Blog

Forumsarchiv 2006, Dezember
Formular und prompt

archivierte Beiträge lesen

  1. (JAVASCRIPT) Formular und prompt von Samuel Vogel, 27. 12. 2006, 16:23

Formular und prompt

Der folgende Beitrag wurde am 27. 12. 2006, 16:23 Uhr von Samuel Vogel veröffentlicht.

Hallo Forum,

Ich würde gerne beim Abschicken eines Formulars noch ein prompt() öffnen, dessen Daten auch mit denen des Formulars an die naechste Seite übergeben werden.

Beispiel: Ich hab ein Forumlar in dem nur checkboxen existieren. Jetzt werden einige davon aktiviert und man klickt auf abschicken. Jetzt soll ein Javascript prompt() kommen in dem man noch eine zusaetzliche information angibt, die dann auch auf der naechsten Seite durch PHP "benutzbar" ist.

Vielen Dank für eure Tips!!

so long,
Samy

Formular und prompt

Der folgende Beitrag wurde am 27. 12. 2006, 17:04 Uhr von rfb veröffentlicht.

Moin

ob das so sinnig ist?

schaff ein input-feld vom type "hidden"
bei onsubmit rufst du ein Script auf
das liest die Eingabe von prompt aus und packt ihn in das verborgene input-feld.
Script wird mit return true beendet.

Der Inhalt aller Formular-Elemente wird übergeben, incl. dem "hidden"-feld.

Gruß
rfb

Formular und prompt

Der folgende Beitrag wurde am 27. 12. 2006, 21:24 Uhr von Snafu veröffentlicht.

Hehe,
genau das hab ich gepostet :)
Ach ja, du musst in der php-Datei überprüfen ob er Inhalt des hidden-Inputs auch ungleich "" ist bzw ungleich dem Wert den du als Standardwert einträgst.

Formular und prompt

Der folgende Beitrag wurde am 27. 12. 2006, 21:38 Uhr von rfb veröffentlicht.

Moin
 > Hehe,
> genau das hab ich gepostet :)

aber ich 4 Std. früher ;-)

Gruß
rfb

Formular und prompt

Der folgende Beitrag wurde am 27. 12. 2006, 21:41 Uhr von Snafu veröffentlicht.

Ja hab ich nachher auch gesehen :)
Aber nachdem ich gesehen hab was Mathias Brodala geantwortet hat hab ich erst gar nicht mehr weitergelesen hehe

Eingabefelder bedingt sichtbar

Der folgende Beitrag wurde am 27. 12. 2006, 17:25 Uhr von Mathias Brodala veröffentlicht.

Hallo Samuel.

> Ich hab ein Forumlar in dem nur checkboxen existieren. Jetzt werden einige davon aktiviert und man klickt auf abschicken. Jetzt soll ein Javascript prompt() kommen in dem man noch eine zusaetzliche information angibt, die dann auch auf der naechsten Seite durch PHP "benutzbar" ist.

Ich persönlich fände diese Bedienung ziemlich hakelig und wenig benutzerfreundlich. Daher mache ich dir einen anderen Vorschlag:

HTML: Füge in dein Formular alle Checkboxen und, wo erforderlich, Eingabefelder ein:

<form action="script.php" method="post">
  <p>
    <label>Foo: <input type="checkbox" name="foocheck" /></label>
    <input type="text" name="foo" />
  </p>
  <p>
    <label>Bar: <input type="checkbox" name="barcheck" /></label>
    <input type="text" name="bar" />
  </p>
  <p>
    <label>Baz: <input type="checkbox" name="bazcheck" /></label>
    <input type="text" name="baz" />
  </p>
  <p><input type="submit" /></p>
</form>



JavaScript: Blende beim Laden erst einmal alle Eingabefelder in deinem Formular aus und stelle die Funktionalität zum Einblenden selbiger bereit:

window.onload = function() {

  // Alle Formularelemente im 1. Formular des Dokumentes
  var elems = document.forms[0].elements;

  for (var i = 0; i < elems.length; ++i) {

    // Alle Eingabefelder ausblenden
    if (elems[i].type == "text") {

      elems[i].style.display = 'none';

    // Alle Checkboxen mit Einblende-Funktionalität versehen
    } else if (elems[i].type == "checkbox") {

      // Auf onchange-Event reagieren
      elems[i].onchange = function() {

        /* this: Checkbox
           this.parentNode: Label
           this.parentNode.parentNode: Absatz
           this.parentNode.parentNode.getElementsByTagName('input'): Checkbox & Eingabefeld
           this.parentNode.parentNode.getElementsByTagName('input')[1]: Eingabefeld
         */

        var input = this.parentNode.parentNode.getElementsByTagName('input')[1];

        // Wenn Checkbox aktiviert
        if (this.checked) {

          // display-Eigenschaft zurücksetzen => Eingabefeld einblenden
          input.style.display = '';
        } else {

          // Eingabefeld ausblenden
          input.style.display = 'none';
        }
      };
    }
  }
};


Steht nun JS und CSS zur Verfügung, wird ein Eingabefeld nur dann eingeblendet, wenn die jeweilige Checkbox aktiviert wird.

PHP: Überprüfe nun in jedem Fall serverseitig die Eingaben. Nimm also den Wert für „Foo“ zum Beispiel nur dann an, wenn die jeweilige Checkbox aktiviert und in das zugehörige Eingabefeld etwas eingetragen wurde:

<?php

if (isset($_POST)) {

  print_r($_POST);
}

?>



Der Vorteil an diesem Aufbau: den Nutzer muss es nicht interessieren, was wie im Hintergrund vor sich geht und er wird nicht Popup-ähnlichen Nervereien belästigt.


Einen schönen Mittwoch noch.

Gruß, Mathias

--
ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)

debian/rules

Formular und prompt

Der folgende Beitrag wurde am 27. 12. 2006, 21:18 Uhr von Snafu veröffentlicht.

Wenn ich dich richtig verstanden habe meinst du sowas ähnliches...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
<script language="javascript" type="text/javascript">
window.onload = function() {
 var myform = document.forms[0];
 myform.onsubmit = function() {
  myform.elements["foo"].value = prompt("Was willst haben?", "");
  return true;
 }
}
</script>
</head>
<body>
<form action="___DEINE_PHP_DATEI___">
<input type="hidden" name="foo" value="" />
Check 1: <input type="checkbox" name="bar" value="Checkbox_1_klicked" /><br />
Check 2: <input type="checkbox" name="foobar" value="Checkbox_2_klicked" /><br />
<input type="submit" />
</form>
</body>
</html>

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4