• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

return false befehl geht nicht mit sumbit

elijakiki

Neues Mitglied
Guten Tag.

Dank eurer Hilfe habe ich geschafft, eine Fehlermeldung zu bekommen, wenn etwas nicht gestimmt hat. So sieht nun mein Code aus (weiter unten)

Nun habe ich ein problem. Der letzte button ist ja ein sumbit button um das formular abzusenden. aber es sendet einfach ab, auch wenn die formulare nicht ausgefüllt sind.
also brauche ich ein "return false" das fügte ich auch ein bei checkForm() und es geht so halbe. aber wenn ich alles richtig ausgefüllt habe im formular, dann wird es nicht abgeschickt, man bleibt auf der seite und man wird nicht ins php weitergeleitet.

bitte helfen
smile.png


HTML:
<html>

<head><title>Formulare</title>

<script type="text/javascript">

function checkForm() {

if (document.forms[0].firma.value=="")
   document.getElementById('checkboxmsg3').style.display='block'
else
   document.getElementById('checkboxmsg3').style.display='none'

if (document.forms[0].ansprech.value=="")
   document.getElementById('checkboxmsg4').style.display='block'
else
   document.getElementById('checkboxmsg4').style.display='none'

if (document.forms[0].tel.value.length<10)
   document.getElementById('checkboxmsg5').style.display='block'
else
   document.getElementById('checkboxmsg5').style.display='none'

if (!validEmail(document.forms[0].email.value))
   document.getElementById('checkboxmsg6').style.display='block'
else
   document.getElementById('checkboxmsg6').style.display='none'

if (document.forms[0].text.value=="")
   document.getElementById('checkboxmsg7').style.display='block'
else
   document.getElementById('checkboxmsg7').style.display='none';

   return false;

}


function validEmail(email) {

  var strReg = "^([a-zA-Z0-9_\.\-11:11 09.07.2012])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";

  var regex = new RegExp(strReg);

  return(regex.test(email));

}

function check() {

if (!document.forms[0].tele.checked &&
    !document.forms[0].video.checked &&
    !document.forms[0].patient.checked &&
    !document.forms[0].anderes.checked)
   document.getElementById('checkboxmsg').style.display='block'
else
   document.getElementById('checkboxmsg').style.display='none'

}

function check2() {

if (!document.forms[0].gesamt.checked &&
    !document.forms[0].end.checked &&
    !document.forms[0].soft.checked)
   document.getElementById('checkboxmsg2').style.display='block'
else
   document.getElementById('checkboxmsg2').style.display='none'

}

</script>

</head>

<body>

<form action="anmelden.php" onsubmit="checkForm()" method="post">

<h2>Formular</h2>

<div id="checkboxmsg" style="display:none; font-weight:bold; color:#ff0000">Bitte Auswahl treffen!<br></div>

<p>

    <input type ="checkbox" name="tele"/>&nbsp;&nbsp;Telesysteme<br />
                <input type ="checkbox" name="video"/>&nbsp;&nbsp;Videosysteme<br />
                <input type ="checkbox" name="patient"/>&nbsp;&nbsp;Patientenrufsysteme<br />
                <input type ="checkbox" name="anderes"/>&nbsp;&nbsp;Anderes Thema<br /> <p>

                <input type="button" value="Überprüfen" onclick='return check()'><br>

<hr noshade width="100%">
<p>
Was wollen Sie?

<p>
<div id="checkboxmsg2" style="display:none; font-weight:bold; color:#ff0000">Bitte Auswahl treffen!<br></div>
<p>
    <input type ="checkbox" name="gesamt" />&nbsp;&nbsp;Gesamtsystem<br />
                <input type ="checkbox" name="end" />&nbsp;&nbsp;Endgeräte<br />
                <input type ="checkbox" name="soft" />&nbsp;&nbsp;Software<br /><p>
                <input type='button' value='Überprüfen' onclick='return check2()'><br>


<p>
<p>Was für ein System haben Sie?</p>
Modell:
  <select>
    <option value="wert1">HP
    <option value="wert2">Dell
    <option value="wert3">Acer
    <option value="wert3">Asus
  </select>
<br>
<p>
Marke: 
 <select>
    <option value="wert1">pro
    <option value="wert2">super
    <option value="wert3">low
  </select>
<p>

<hr noshade width="100%">
<p>

<table border="0" cellpadding="5" cellspacing="0" >
<tr>

<p>
<div id="checkboxmsg3" style="display:none; font-weight:bold; color:#ff0000">Firma wurde nicht ausgefüllt!</div>
<div id="checkboxmsg4" style="display:none; font-weight:bold;  color:#ff0000">Ansprechsperson wurde nicht ausgefüllt!</div>
<div id="checkboxmsg5" style="display:none; font-weight:bold;  color:#ff0000">Telefonnummer wurde nicht richtig  ausgefüllt!</div>
<div id="checkboxmsg6" style="display:none; font-weight:bold;  color:#ff0000">Die E-Mail wurde falsch ausgefüllt!</div>
<div id="checkboxmsg7" style="display:none; font-weight:bold;  color:#ff0000">Bitte beschreiben Sie Ihr  Problem!</div><p>

<td align="right">Firma: &nbsp; 
<td><input name='firma' type="text" size="30" maxlength="30">
<align="right">&nbsp; &nbsp; Ansprechsperson: &nbsp; 
<input name='ansprech' type="text" size="30" maxlength="30"></td>
</tr>
<tr>
<td align="right">Telefon: &nbsp; 
<td><input name='tel' type="text" size="30" maxlength="15">
<align="right">&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E-Mail: &nbsp; 

<input name='email' type="text" size="30" maxlength="30">
</form>
</tr>
<tr>
<td align="right" valign="top">Problem:</td>
<td><textarea name='text' rows="10" cols="66"></textarea></td>
</tr>
<tr>
<td align="right">Formular:</td>
<td>
<p><p><input type="submit" value='Absenden' onclick='return checkForm()'>
<input type="reset" value=" Abbrechen"></p></p>
</td>
</tr>
</table>
</form>

</body>

</html>
 
Deine checkForm() Methode gibt immer false zurück. Du darfst natürlich nur false zurückgeben, wenn tatsächlich ein Fehler aufgetreten ist.
 
Entweder über ein Statusflag, oder bei jedem deiner ifs auch false returnen, was jedoch dazu führt das jeweils nur der erste Fehler angezeigt wird.
 
(Pseudocode!)
Code:
fehler_aufgetreten = false;

wenn(fehler_1)
    error(fehler_1);
    fehler_aufgetreten = true;

wenn(fehler_2)
    error(fehler_2);
    fehler_aufgetreten = true;

...
...

wenn(fehler_aufgetreten = true)
    return false;
else
    return true;

Ein Flag wird also true (je nach Definition) wenn ein Fehler aufgetreten wird (Überprüfen und setzen bei jedem individuellen Fehler). Am Ende wird dann überprüft ob das Flag gesetzt ist oder nicht, dementsprechend wird eine Entscheidung getroffen (hier: return false wenn Fehler, return true wenn nicht [kein Fehler]).
 
Na in deine checkForm(). Flag am Anfang auf false, bei jeder Fehlerüberprüfung, wenn der Fehler auftritt (wenn ich das bei dir sehe immer der if()-Teil) auf true setzen, am Ende der Funktion dann Flag überprüfugen und entsprechendes Ergebnis returnen.

Was mir noch eingefallen ist: Wenn man die Flags rumdreht (jedes true mit false vertauschen) kann man am Ende einfach return fehlerflag; nehmen und spart sich ein if-else.
 
Zurück
Oben