Ergebnis 1 bis 11 von 11
  1. #1
    Avatar von spacefrog78
    spacefrog78 ist offline Haudegen
    registriert
    21-08-2002
    Ort
    VS
    Beiträge
    690

    Question Formulareingaben bei submit prüfen --> Fehler?

    Hallo mal wieder,
    es geht mal wieder um ein Formular.

    Dieses besteht aus zwei Textfeldern. Das erste Feld dient zur Eingabe eines Wertes und das zweite Feld soll diesen Wert verwenden und weiterverrechnen, dies aber allerdings nur, wenn der Wert aus Zahlen besteht, die zwischen 30-120 liegen.
    Deswegen habe ich eine Abfrage eingefügt, die bei Verlassen des ersten Feldes prüft, ob der Wert zulässig ist und wenn ja, diesen Wert zur Berechnung weiterverwendet. Wenn nicht, dann wird eine Fehlermeldung ausgegeben.

    Soweit, so gut. Das funktioniert so auch. Der Haken bei der Sache ist, dass im Folgenden bei Klick auf den weiter-button noch eine weitere Seite geladen werden soll.
    Hier sollte natürlich auch überprüft werden, ob der Benutzer nicht irgendeinen Mist eingetragen hat.
    Ich könnte natürlich die Überprüfung des Werts gleich auf den submit-button legen, aber dann wird ja nicht gleich das Ergebnis der Berechnung nach Verlassen des Eingabefelds noch errechnet bzw. sieht das der Benutzer dann nicht mehr.

    Anbei mein Quelltext.

    Code:
    <form name="schritt4" action="5A1A.htm">
      <table width="100%" border="0" cellpadding="0" cellspacing="0" frame="box" bgcolor="#99CCFF">
        <tr>
          <td width="23%" height="14" valign="top" bgcolor="#6699FF">&nbsp;</td>
          <td width="4%" height="14" valign="top">&nbsp;</td>
          <td height="14" valign="top" colspan="2">&nbsp;</td>
        </tr>
        <tr> 
          <td width="23%" height="48" valign="top" bgcolor="#6699FF"><b><a href="../../../help/def.htm#qH" target="_blank">Spezifischer 
            Heizw&auml;rmebedarf (q<sub>H</sub>):</a></b></td>
          <td width="4%" height="48" valign="top">&nbsp;</td>
          <td height="48" valign="top" colspan="2"> 
            <input type="text" name="qH" maxlength="8" value="70" size="10" onclick="selectqH()" onChange="chkWerte()" class="rahmen">
            kWh/(a*m<sup>2</sup>) </td>
        </tr>
        <tr> 
          <td width="23%" height="48" valign="top" bgcolor="#6699FF"><a href="../../../help/def.htm#QH" target="_blank"><b>Heizw&auml;rmebedarf 
            f&uuml;r das Objekt (Q<sub>H</sub>):</b></a> </td>
          <td width="4%" height="48" valign="top">&nbsp;</td>
          <td height="48" valign="top" colspan="2"> 
            <input type="text" name="QH" maxlength="8" size="10" readonly onClick="selectQH()" class="rahmen">
            kWh/a</td>
        </tr>
        <tr> 
          <td width="23%" height="16" valign="top" bgcolor="#6699FF">&nbsp;</td>
          <td width="4%" height="16" valign="top">&nbsp;</td>
          <td height="16" colspan="2" valign="top">&nbsp; </td>
        </tr>
        <tr> 
          <td bgcolor="#6699FF" height="33" width="23%"> 
            <input type="hidden" name="A" size="20">
            <input type="hidden" name="V" size="20">
            <input type="hidden" name="A_V" size="20">
            <input type="hidden" name="AN" size="20">
            <input type="hidden" name="qpmax" size="20">
            <input type="hidden" name="Qpmax" size="20">
            <input type="hidden" name="QTW" size="20">
          </td>
          <td></td>
          <td>Durch Klicken des blablabla.</td>
        </tr>
         <tr> 
          <td width="23%" height="48" bgcolor="#6699FF">&nbsp;</td>
          <td width="4%" height="48">&nbsp;</td>
          <td height="48" width="26%"> 
            <input type="button" name="zurueck" value=" &lt;- zur&uuml;ck " onClick="javascript:history.back()">
          </td>
          <td height="48" width="47%"> 
            <input type="submit" name="weiter" value=" weiter -&gt; ">
          </td>
        </tr>
      </table>
    </form>
    
    <script>
    /*  Überprüfung von einzelnen Werten. */
    
    function chkWerte()
    {
    var qH = parseInt(document.schritt4.qH.value);
    var AN = (parseInt(formular[1])*0.32);
    var QH = qH*AN;
      if((qH < 30)||(qH >=120) || (isNaN(qH)))  {
        alert("Bitte geben Sie einen gültigen Wert ein. Tipp: Werte liegen zwischen 30 und 120.");
        document.schritt4.qH.focus();
        return false; }  
      else { 
         document.schritt4.QH.value=QH.toFixed(2);
           }    
    }
    Was habe ich denn falsch gemacht? *verzweifelnd*

  2. #2
    Avatar von sanchez
    sanchez ist offline Lounge-Member
    registriert
    16-07-2002
    Ort
    Bremen
    Beiträge
    3.472
    kannst du das nicht mit zwei seiten machen? also eingabe und dann überprüfen, dann weiter leiten und als value den neuen (berechneten) wert...in einer neuen html...?
    Niemals aufgeben...aufgeben gilt nicht

  3. #3
    Avatar von spacefrog78
    spacefrog78 ist offline Haudegen
    registriert
    21-08-2002
    Ort
    VS
    Beiträge
    690
    Könnte ich schon, Sanchez. Allerdings wäre es sehr viel besser, das in ein und derselben Datei zu machen, weil die Werte auch inhaltlich zusammengehören.
    Wenn es gar nicht geht, dann muss ich es wohl so machen, aber mir wäre lieber hierfür ne Lösung zu finden.
    Irgendwie muss das doch zu machen sein, oder?

  4. #4
    Avatar von sanchez
    sanchez ist offline Lounge-Member
    registriert
    16-07-2002
    Ort
    Bremen
    Beiträge
    3.472
    hast du vielleicht die möglichkeit php zu nutzen? ich denke, damit wird es etwas einfacher...
    Niemals aufgeben...aufgeben gilt nicht

  5. #5
    Avatar von spacefrog78
    spacefrog78 ist offline Haudegen
    registriert
    21-08-2002
    Ort
    VS
    Beiträge
    690
    für php bräuchte ich zugriffsrechte auf den server, richtig?
    wenn ja, dann hab ich leider nicht die möglichkeit.

    Es sollte auch nicht zu aufwendig werden. Von PHP habe ich gelinde gesagt, sehr beschränkte bis gar keine Ahnung. Dafür hatte ich bisher noch keine Zeit.

    Im Prinzip funktioniert der angegebene Quellcode auch. Nur wenn ich einen falschen Wert eingebe, dann bekomme ich die Fehlermeldung. Wenn ich jetzt nochmal den selben Wert eingebe, dann bekomme ich die Fehlermeldung nochmal, werde aber auf die nächste Seite weitergeleitet.
    Und das verstehe ich echt nicht, wie ich beim ersten mal nicht weitergeleitet werde bei Eingabe des falschen Wertes und beim zweiten Mal komme ich dann weiter.

  6. #6
    Avatar von sanchez
    sanchez ist offline Lounge-Member
    registriert
    16-07-2002
    Ort
    Bremen
    Beiträge
    3.472
    Hallo,

    Also wenn ich jetzt deinen Code richig gedeutet habe, dann willst du per formular auf eine andere Seite...
    Möchtest du die im Formular eingegebnenen Daten in dieser nächsten Seite bearbeiten? Wenn ja, wie?
    Wenn nein, kannst du die eigentliche Weiterleitung nicht in die Funktion einbauen?
    Niemals aufgeben...aufgeben gilt nicht

  7. #7
    Avatar von spacefrog78
    spacefrog78 ist offline Haudegen
    registriert
    21-08-2002
    Ort
    VS
    Beiträge
    690
    Hallo,
    ja, ich möchte die Daten, die per Formular eingelesen wurden, auf die nächste Seite übertragen.
    Die Daten werden dann per URL an die nächste Seite übergeben und von dort per Dekodier-Funktion ausgelesen und weiterverwendet.

    Ich hatte mir auch schon überlegt, die Weiterleitung in die Funktion einzubauen. Der Nachteil hierbei ist, dass der submit-Button dann nicht mehr unbedingt nötig wäre.
    Dieser sollte ja zum Übergeben der Werte dienen. Wenn ich jedoch beim submit-button die Überprüfung der Werte einbaue und nicht auf das Eingabefeld, dann ist das eine Problem mit der Weiterleitung zwar gelöst, allerdings kann ich dann nicht den Wert für das zweite Feld per onChange() verändern lassen oder?

    Danke mal so zwischendurch, dass Du Dir mit mir so viel Mühe gibst!

  8. #8
    Avatar von sanchez
    sanchez ist offline Lounge-Member
    registriert
    16-07-2002
    Ort
    Bremen
    Beiträge
    3.472
    mach es doch so, dass bei der eingabe in das feld geprüft wird ob der wert richtig ist (so wie es jetzt ja schon ist) und mache eine zweite Funktion, die durch den button-klick ausgeführt wird und die ebenfalls prüft ob alles in ordnung mit dem wert ist und dich dann weiterleitet. Also einmal eine funktion chkwerte(), die das macht was sie jetzt schon macht und dann eine funktion chkwerte2(), die dich dann auf die nächste seite weiterleitet...
    hoffentlich hast du die Erklärung verstanden...
    Niemals aufgeben...aufgeben gilt nicht

  9. #9
    Avatar von spacefrog78
    spacefrog78 ist offline Haudegen
    registriert
    21-08-2002
    Ort
    VS
    Beiträge
    690
    danke Sanchez!

    Das habe ich auch schon ausprobiert. Allerdings half mir das nicht bei meinem Problem, ob die Eingabe jetzt richtig ist oder nicht. Beim ersten mal gibt er mir noch die Fehlermeldung, beim zweiten Mal auch, allerdings springt er dann trotzdem auf die nächste Seite.
    Wieviel Sinn macht eine Berechnung und Fehlerausgabe des Werts beim Mouseover über den submit-button?
    Damit könnte man doch theoretisch verhindern, dass jemand draufklickt, wenn die Werte noch nicht stimmen, oder?

  10. #10
    Avatar von sanchez
    sanchez ist offline Lounge-Member
    registriert
    16-07-2002
    Ort
    Bremen
    Beiträge
    3.472
    per onchange testen ob werte stimmen und in ein textfeld den berechneten wert schreiben. funktion fertig...
    dann:
    per submit wieder testen (eine andere funktion als die erste), ob die werte stimmen, wenn die werte stimmen, dann erst weiterleiten...das müßte doch eigentlich gehen, da man bei der funktion (die, die mit dem submit button ausgelöst wird) erst weitergeleitet wird, wenn eine bedingung zutrifft, ansonsten weiß ich nicht, warum das nicht funktionieren soll.
    Niemals aufgeben...aufgeben gilt nicht

  11. #11
    Avatar von spacefrog78
    spacefrog78 ist offline Haudegen
    registriert
    21-08-2002
    Ort
    VS
    Beiträge
    690

    Talking Vielen Dank! Jetzt gehts!

    Danke Sanchez!
    Hast mir sehr weitergeholfen.
    Das funktioniert jetzt. Mit dem Mouseover ist das optimal, denn sobald man in die Nähe des weiter-buttons kommt, kommt die Fehlermeldung (sollten denn falsche Werte eingegeben worden sein) oder wenn alles richtig war, passiert gar nichts und der User merkt nicht mal, dass da ne Funktion dahintersteckt.

    Vielen Dank! Hatte mir einiges an Kopfzerbrechen bereitet.

    Obige Lösung erspart einem auch den erneuten Check per submit-button, weil ja bei einem mouse-over schon überprüft wird. Man kommt ja nicht dazu, darauf zu klicken, wenn's nicht stimmt. Scheint die optimale Lösung zu sein. Danke sehr!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •