Überprüfungsscript funktioniert nicht.

Tucker

Erfahrenes Mitglied
Hi,

Ich schreibe zur Zeit an einem formmailer. Nun bin ich grad bei der Version 1.1
In diese Version habe ich ein JavaScript eingebaut, welches überprüfen soll, ob alle nötigen Einträge getätigt wurden. Allerdings funktioniert es nicht, kann mir jemand sagen, warum?

Hier das Script:
PHP:
<script language="JavaScript">
<!--
function testvalues()
{
var i=0;
var obj=document.mail;
var ausgabe="Folgende Eingaben fehlen:\n\n";
if (obj.empfaenger_name.value="")
{
if (i>0)ausgabe+="\n\n";
i++;
ausgabe+="Empfänger";
}

if (obj.betreff.value="")
{
if (i>0)ausgabe+="\n\n";
i++;
ausgabe+="Betreff";
}

if (obj.nachricht.value="")
{
if (i>0)ausgabe+="\n\n";
i++;
ausgabe+="Nachricht";
}

if (obj.absender.value=="")
{
if (i>0) ausgabe+="\n";
i++;
ausgabe+="Name des Absenders";
}

if (obj.absender_mail.value=="")
{
if (i>0) ausgabe+="\n\n";
i++;
ausgabe+="Absender- E-Mail";
}

else
{
search=/(^[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)*\@[a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+(\.[a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+(\.[a-zA-Z0-9]{2,3}$)/;
result=search.test(obj.absender_mail.value);
if (result==false)
{
if (i>0) ausgabe+="\n";
ausgabe+="E-Mail des Absenders ist ungültig";
i++;
}
}if (i>0)
{
alert(ausgabe);
return false;
}
else
{
return true
}
}
//-->
</script>

Vielen Dank für eure Hilfe, schon im Vorraus.
 
Hi,

beim ersten Überfliegen habe ich gesehen, dass die if-Bedingungen
"empfaenger_name", "betreff" und "nachricht" nur einfache Anführungszeichen
enthalten. Es müssten jedoch doppelte sein (==), da es sich sonst um eine
Zuweisung und nicht um einen Vergleich handelt.

Vielleicht löst das bereits Dein Problem.

Ciao
Quaese
 
Hat doch doppelte Anführungszeichen,oder was genau meinst du jetzt?

Redest du jetzt von Anführungszeichen vor dem doppelten Gleichehistezciehn, oder danach?

Schreibe mir doch schnell für einen If-Clause ein Script, damit ich sehe, auf was du das jetzt beziehst.

Sorry, komm mir grad ein bissel doof vor. Ni böse gemeint, glaub ich steh ein bissel neben mir und weiß deshalb nicht, wie du das meinst.
 
Hi,

sorry - ich bin der, der sich ein "bissel doof " vorkommt. Ich meinte natürlich Gleichheitszeichen,
nicht Anführungszeichen.

&nbsp;&nbsp;if (obj.empfaenger_name.value == "")

Ciao
Quaese
 
ich hab das jetzt nochmal hochgeladen und es immer noch nicht.

hier noch mal das gesamte script mit html, vielleicht lags ja gar nicht am Header.

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function testvalues()
{
var i=0;
var obj=document.mail;
var ausgabe="Folgende Eingaben fehlen:\n\n";
if (obj.empfaenger_name.value == "")
{
if (i>0)ausgabe+="\n\n";
i++;
ausgabe+="Empfänger";
}

if (obj.betreff.value == "")
{
if (i>0)ausgabe+="\n\n";
i++;
ausgabe+="Betreff";
}

if (obj.nachricht.value == "")
{
if (i>0)ausgabe+="\n\n";
i++;
ausgabe+="Nachricht";
}

if (obj.absender.value == "")
{
if (i>0) ausgabe+="\n";
i++;
ausgabe+="Name des Absenders";
}

if (obj.absender_mail.value == "")
{
if (i>0) ausgabe+="\n\n";
i++;
ausgabe+="Absender- E-Mail";
}

else
{
search=/(^[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)*\@[a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+(\.[a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+(\.[a-zA-Z0-9]{2,3}$)/;
result=search.test(obj.absender_mail.value);
if (result==false)
{
if (i>0) ausgabe+="\n";
ausgabe+="E-Mail des Absenders ist ungültig";
i++;
}
}if (i>0)
{
alert(ausgabe);
return false;
}
else
{
return true
}
}
//-->
</script>


</head>

<body>
<form action="../mailer1.1/bericht.php" method="post" target="_self" name="mail" onSubmit="testvalues()">
<center>
    <table cellspacing="0" cellpadding="0" border="0">
      <tr> 
        <td colspan="2">
Bitte füllen Sie die nachfolgenden Felder aus. <br>
            <br>
          
          </td>
      </tr>
	  <tr>
	  	<td>
		Senden an:
		</td>
		<td>
		<select name="empfaenger_name">
			<option value"">Bitte wählen...</option>
			<option>Carsten</option>
			<option>Carsten Beeg</option>
			<option>Webmaster</option>
		</select>
		</td>
	  </tr>
      <tr> 
        <td> Betreff: </td>
        <td> 
		<input type="text" name="betreff">
		</td>
      </tr>
      <tr> 
        <td width="150" valign="top">Nachricht:</td>
        <td width="300"> <textarea name="nachricht" cols="34" rows="6"></textarea> 
          <br> <br></td>
      </tr>
      <tr> 
        <td valign="top">Absender:</td>
        <td> <input type="text" name="absender" value="" size="40"> </td>
      </tr>
      <tr> 
        <td valign="top">Absender E-mail:</td>
        <td> <input type="text" name="absender_mail" value="" size="40"> <br> 
          <br></td>
      </tr>
      <tr> 
        <td colspan="2">Wollen Sie eine Kopie der E-mail zugeschickt bekommen?</td>
      </tr>
      <tr> 
        <td valign="top">Kopie:</td>
        <td> <input type="checkbox" name="kopie" value="ja"> <br> <br></td>
      </tr>
      <tr> 
        <td colspan="2" align="right"><br> <input type="reset" value="alles löschen"> 
          <input type="submit" value="E-mail senden"> </td>
      </tr>
    </table>
</center>
<input type="hidden" name="type" value="short">
</form><p>
<div align="center"><i><?php echo "formmailer-script <a href=\"http://www.cabe2010.de/\" target=\"_blamk\">by cabe2010&copy;</a></i></div>";?>
</body>
</html>


bitte ni sauer sein, dass ich die gesamte datei kopiert habe, aber ich selbst finde kein fehler.
 
Setz die Regex in Singlequotes - also
Code:
search='/(^[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)*\@[a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+(\.[a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+(\.[a-zA-Z0-9]{2,3}$)/';
dannach sollte es gehen...

ciao
 
Der RegEx ist schon richtig ohne quotes.... die braucht man dort in JS nicht :-)
Ansonsten ist da aber nen anderer Fehler im RegEx... der ist mir aber zu lang zum suchen.
Probiers mal so:
Code:
search=/^[\w\-\_\.]+@[\w\-\_\.]*[\w\-\_]{3}\.[a-z]{2,6}$/;
Ist nur so grob dahingeschriebn... etwas genauere Varianten lassen sich im PHP-Forum sicher finden.(Übrigens..gibt es mittlerweile(oder demnächst) auch TLD mit mehr als 3 Zeichen, bspw. ".museum")

Dann hast du den ersten Fehler gleich am Anfang des Skripts:
Code:
if (obj.empfaenger_name.value == "")
....."empfaenger_name" ist ein <select> und hat keinen "value".
Wenn du bspw. ermitteln willst, ob die erste <option> (die mit leerem value) ausgewählt wurde, machs z.B. so:
Code:
if (obj.empfaenger_name.selectedIndex<1)

Dann ist da noch der Funktionsaufruf:
Code:
onSubmit="testvalues()"
.... die Funktion wird zwar aufgerufen, jedoch nicht auf deren Rückgabewert gewartet.
Wenn du willst, dass das Senden abgebrochen wird, falls ein Fehler auftritt, muss der Aufruf so erfolgen:

Code:
onSubmit="return testvalues()"
 

Neue Beiträge

Zurück