focus auf leeres formularfeld
Monika
- php
Hallo Forum,
in hätte in meinem Formular gerne einen Abfrage drin, dass wenn das Formularfeld (beispiel: Name) leer ist, soll die Seite nochmal angezeigt werden, und der Cursor in diesem Feld stehen (nach Möglichkeit noch der rot markierte Text neben disem Feld, dass man doch bitte seinen Namen eintragen soll.
Leider weiss ich nicht, wie ich das in mein Script einbauen soll, dass die Ursprungsseite nochmal angezeigt wird, bis das Feld ausgefüllt sind. ).
Kann mir jemand bitte helfen:
Vielen Dank im Voraus,
Monika
<?php
$strEmpfaenger = 'testi@test.com';
$strFrom = '"Formmailer" Kontaktanfrage@test.de';
$strSubject = 'Kontakt';
$strReturnhtml = 'http://www.test.com/Kontaktiert.html';
$strDelimiter = ":\t";
if($_POST)
{
$strMailtext = "";
while(list($strName,$value) = each($_POST))
{
if(is_array($value))
{
foreach($value as $value_array)
{
$strMailtext .= $strName.$strDelimiter.$value_array."\n";
}
}
else
{
$strMailtext .= $strName.$strDelimiter.$value."\n";
}
}
if(get_magic_quotes_gpc())
{
$strMailtext = stripslashes($strMailtext);
}
//mein
if(empty($_POST['Name']))
{
echo ("bitte Namen eintragen");
exit;
}
else
{
mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
or die("Die Mail konnte nicht versendet werden.");
header("Location: $strReturnhtml");
exit;
}
//ende mein
}
?>
//////////////////////////////////////////
HIER DAS FORMULAR:
////////////////////////////////////////////
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post" name="kontakt">
<table width="363" height="364" border="0" class="text" style="margin-left: 0px">
<tr>
<td valign="top" nowrap>Ihre Nachricht</td>
<td><textarea name="Nachricht" style="width:220px; height:70px" rows="7" cols="50"></textarea></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr><tr>
<td>Name*</td>
<td><input name="Name" type="text" value="" style="width:220px;" /></td>
</tr>
<tr>
<td height="26"> </td>
<td><input type="submit" value="Senden"/>
</td>
</tr>
</table>
</form>
Mahlzeit,
Leider weiss ich nicht, wie ich das in mein Script einbauen soll, dass die Ursprungsseite nochmal angezeigt wird, bis das Feld ausgefüllt sind. ).
Durch Nutzung eines Affenformulars.
MfG,
EKKi
Hello,
das mit dem Focus ist nicht so sicher möglich.
Dazu müsstest Du JavaScript bemühen oder darauf vertrauen, dass der Browser die vorgegebene Tabulator-Reihenfolge beachtet.
Für die Anzeige eines Warntextes baust Du Dein Affenformular entsprechend um
Erstmal muss im reinen HTML-Dokument ein Platz dafür vorhanden sein.
Dann kannst Du im Script prüfen
$_errormsg = array();
if (empty($_POST['name']))
{
$_errormsg['name'] = 'bitte geben Sie einen Namen an';
}
und das dann nachher mit ausgeben lassen
if(!empty($_errormsg[$feldname]))
{
echo "<td class="errormsg">".htmlspechialchars($_errormsg[$feldname])."</td>\r\n";
}
echo "<td class="errormsg"><input
type="text"
size="\50"
name="$feldname"
value="".htmlspechialchars($_POST[$feldname]).""></td>\r\n";
Aus dem Ganzen kannst Du Dir dann eine Funktion oder Methode für die Feldausgabe bauen, sodass Du pro Feld nur noch ein paar Argumente übergeben musst, und das ganze HTML- und CSS-Gesummse nur einmal schreiben musst.
Solange Fehlertexte vorhanden sind, wird dann einfach nicht abgespeichert, sondern immer wieder vorgelegt.
Ein harzliches Glückauf
Tom vom Berg
Hallo,
in hätte in meinem Formular gerne einen Abfrage drin, dass wenn das Formularfeld (beispiel: Name) leer ist, soll die Seite nochmal angezeigt werden, und der Cursor in diesem Feld stehen
if ( !$_POST['Name'] )
{
$f_name = "Bitte Ihren Namen";
$focus = "document.kontakt.Name.focus()";
}
else if ( !$_POST['Vorname'] )
{
$f_vname = "Bitte Ihren Vornamen";
$focus = "document.kontakt.Vorname.focus()";
}
...
<body onLoad="<? echo $focus; ?>">
...
<td>Name* <b><? echo $f_name; ?></b></td>
...
Die Meldung und der Focus steht dann auf dem ersten von mehreren möglichen Fehlerfeldern. Wandle das Beispiel so um, dass _alle_ Fehlerfelder mit Nachrichten belegt werden, die "Salamitaktik" (haha, und noch ein Fehler gefunden) ist was für Erstklässler.
MfG Kalle