action ändern
Herbert1204
- javascript
Hallo
Ich brauche einmal wieder Eure Hilfe.
Ich habe ein Skript (siehe unten), wo ein Submit und ein Button zu sehen ist. Wenn der Submit angeklickt wird, werden die Eintragungen überprüft und bei Richtigkeit als E-Mail versannt. Wenn der Button angeklickt wird, wird in einem iFrame eine eigene Internetseite angezeigt.
Nun möchte ich, dass das Skript so umgeschrieben wird, dass beim Anklicken des Submit nach der Überprüfung nicht die Daten als E-Mail versannt werden, sondern die Internetseite im iFrame angezeigt wird.
Kann mir jemand dabei helfen?
Im Voraus schon einmal Vielen Dank
<SCRIPT LANGUAGE="JavaScript">
function validate_form() {
validity = true;
if (!check_empty(document.form.NAME.value)){ /* Funktion Namen (Abfrage) */
validity = false;
show('Layer1');show('Layer2'); /* zeige Fehler */
}
if (!check_email(document.form.EMAIL.value)){ /* Funktion EMail (Abfrage) */
validity = false;
show('Layer1');show('Layer3'); /* zeige Fehler */
}
if (!check_url(document.form.URL.value)){ /* Funktion URL (Abfrage) */
validity = false;
show('Layer1');show('Layer4'); /* zeige Fehler */
}
if (!check_empty(document.form.DESCRIPTION.value)){ /* Funktion Comment (Abfrage) */
validity = false;
show('Layer1');show('Layer5'); /* zeige Fehler */
}
if (validity);
return validity; /* alle Angaben waren korrekt */
}
function check_empty(text) {
return (text.length > 0); /* gibt false zurück wenn leer */
}
function check_email(address) { /* Email muss (@ und .) enthalten */
if ((address == "") || (address.indexOf ('@') == -1) || (address.indexOf ('.') == -1))
return false;
return true;
}
function check_url(address) { /* URL muss (http:// und .) enthalten */
if ((address == "") || (address.indexOf ('http://') == -1) || (address.indexOf ('.') == -1))
return false;
return true;
}
if (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0,1)) >=3))
|| ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion.substring(0,1)) >=4)))
{var version=true}
if (document.layers){ /* Browserabfrage: Layer-Object bekannt? */
ns = 1; ie = 0;
}else{
ns = 0; ie = 1;
}
function show(name) {if (ns){ /* Funktion Schicht anzeigen */
document.layers['' + name].visibility = "show";
}else{
document.all['' + name].style.visibility = "visible";
}
}
function hide(name) { /* Funktion Schicht verstecken */
if (ns){
document.layers['' + name].visibility = "hide";
}else{
document.all['' + name].style.visibility = "hidden";
}
}
</SCRIPT>
<form name="form" method="post" action="mailto:Ihre@mail.de?SUBJECT=Betreff für die Mail" enctype="text/plain" onSubmit="return validate_form(this.form)">
<table width="750">
<tr>
<td width="130" align="right" valign="top">
<font face="Arial"><span style="font-size:12pt;"><b>Name:</b></span></font>
</td>
<td width="360" align="right" valign="top">
<input type="text" name="NAME" style="width:350px;">
</td>
<td>
<div id="Layer2" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:10pt;"><b>Bitte Name angeben!</b></span></font></div>
</td>
</tr>
<tr>
<td width="130" align="right" valign="top">
<font face="Arial"><span style="font-size:12pt;"><b>Email:</b></span></font>
</td>
<td width="360" align="right" valign="top">
<input type="text" name="EMAIL" style="width:350px;">
</td>
<td>
<div id="Layer3" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:10pt;"><b>E-Mail nicht korrekt!</b></span></font></div>
</td>
</tr>
<tr>
<td width="130" align="right" valign="top">
<font face="Arial"><span style="font-size:12pt;"><b>URL:</b></span></font>
</td>
<td width="360" align="right" valign="top">
<input type="text" name="URL" style="width:350px;">
</td>
<td>
<div id="Layer4" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:10pt;"><b>URL nicht korrekt!</b></span></font></div>
</td>
</tr>
<tr>
<td width="130" align="right" valign="top">
<font face="Arial"><span style="font-size:12pt;"><b>Beschreibung:</b></span></font>
<br>
</td>
<td width="360" align="right" valign="top">
<TEXTAREA NAME="DESCRIPTION" style="width:350px; height:100px"></TEXTAREA>
</td>
<td>
<div id="Layer5" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:10pt;"><b>Bitte Beschreibung angeben!</b></span></font></div>
</td>
</tr>
<tr>
<td colspan="2" height="40" width="490">
<div id="Layer1" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:11pt;"><b>Bitte überprüfe noch einmal deine Eingaben!</b></span></font></div>
</td>
<td height="40">
<p> </p>
</td>
</tr>
<tr>
<td colspan="3">
<input type="submit" value="Submit" onclick="hide('Layer1');hide('Layer2');hide('Layer3');hide('Layer4');hide('Layer5')" style="font-size:x-large;">
<input type="button" value="Button" onClick="Ortsbestimmung.location.href='http://www.google.de';"><p> </p>
</td>
</tr>
</table>
<iframe width="700" height="300" name="Ortsbestimmung" marginheight="0" marginwidth="0" frameborder="0">
</iframe>
</form>
Mahlzeit Herbert1204,
Ich habe ein Skript (siehe unten), wo ein Submit und ein Button zu sehen ist. Wenn der Submit angeklickt wird, werden die Eintragungen überprüft und bei Richtigkeit als E-Mail versannt.
Nur wenn ich bei mir Javascript aktiviert habe. Merke: Validitätsprüfungen sollten normalerweise *immer* dort passieren, wo niemand manipulieren kann - also wenn es geht *niemals* beim Client!
Nun möchte ich, dass das Skript so umgeschrieben wird, dass beim Anklicken des Submit nach der Überprüfung nicht die Daten als E-Mail versannt werden, sondern die Internetseite im iFrame angezeigt wird.
OK - aber was soll dann alternativ mit den "überprüften" Daten passieren? Nichts?
Und *welche* "Internetseite" soll im iFrame angezeigt werden?
MfG,
EKKi
@@EKKi:
nuqneH
Merke: Validitätsprüfungen […] *niemals* beim Client!
Unsinn.
Warum sollen falsche Nutzereingaben erst zum Server geschickt werden? Natürlich ist eine clientseitige Prüfung von Nutzereingaben u.U. sinnvoll. Was selbstverständlich nicht von der serverseitigen Prüfung entbindet.
In HTML5-fähigen Browsern ist eine clientseitige Prüfung sogar ohne JavaScript möglich. Aber bitte nicht input[@type="email"] verwenden, bevor das nicht richtig implementiert ist und auch Nicht-ASCII-Zeichen zulässt.
Qapla'
Mahlzeit Gunnar Bittersmann,
Merke: Validitätsprüfungen […] *niemals* beim Client!
Unsinn.
OK, für unseren "Forumskorinthenkacker" ergänze ich das Offensichtliche:
Validitätsprüfungen [...] *niemals* NUR beim Client!
Zufrieden? :-)
MfG,
EKKi
@@EKKi:
nuqneH
OK, für unseren "Forumskorinthenkacker" ergänze ich das Offensichtliche:
Validitätsprüfungen [...] *niemals* NUR beim Client!
Zufrieden? :-)
Ja. Das ist aber eine völlig andere Aussage; keine Korinthe.
Qapla'
Aber bitte nicht input[@type="email"] verwenden, bevor das nicht richtig implementiert ist und auch Nicht-ASCII-Zeichen zulässt.
Ist das eigentlich mehr eine akademische Frage oder benutzt irgendwer wirklich solche E-Mail-Adressen?
Gibt es irgendeine Software, die am Mailversenden und -empfangen beteiligt ist, die solche Adressen unterstützt?
Also, würde es irgendetwas bringen, solche Adressen in einem HTML-Formulare zuzulassen? Kann man daran auch wirklich Mails senden oder scheitert das ohnehin an den beteiligten Mail-Clients und MTAs?
Gibt es Adressen, mit denen man das mal mit gegebenen Mail-Clients und -Servern probieren kann? Gibt es Anbieter, die das zulassen, wo man sich solche testweise einrichten kann?
Mathias
@@molily:
nuqneH
Ist das eigentlich mehr eine akademische Frage oder benutzt irgendwer wirklich solche E-Mail-Adressen?
Warum nicht? Und selbst wenn heute noch nicht, dann doch zukünftig.
Also, würde es irgendetwas bringen, solche Adressen in einem HTML-Formulare zuzulassen? Kann man daran auch wirklich Mails senden oder scheitert das ohnehin an den beteiligten Mail-Clients und MTAs?
Es ist die Aufgabe von Mailclients/mailversendenden Scripten, IDNs in Punycode umzuwandeln. Es ist nicht die Aufgabe von Webformularen/Browsern, IDN-E-Mail-Adressen abzuweisen. Und schon gar nicht die Aufgabe von HTML5, IDN-E-Mail-Adressen generell zu verbieten.
Gibt es Adressen, mit denen man das mal mit gegebenen Mail-Clients und -Servern probieren kann? Gibt es Anbieter, die das zulassen, wo man sich solche testweise einrichten kann?
Es gibt Umlautdomains. mathiasschäfer.de wäre wohl noch frei. Oder du legst dir eine Subdomain an.
Qapla'
Tach,
Ist das eigentlich mehr eine akademische Frage oder benutzt irgendwer wirklich solche E-Mail-Adressen?
Gibt es irgendeine Software, die am Mailversenden und -empfangen beteiligt ist, die solche Adressen unterstützt?
habs gerade getestet:
testä@example.com: BSD-Mail kodiert den Header nicht korrekt, versendet die Mail aber, Postfix, Procmail haben kein Problem.
t²stä@example.com: BSD-Mail kodiert den Header nicht korrekt, versendet die Mail aber, Postfix hat kein Problem, Procmail kann damit nicht umgehen.
Mit nem graphischen Mailclient konnte ich jetzt nicht testen, da der SMTP meines Providers die Mails nicht annehmen will.
mfg
Woodfighter
Tach,
t²stä@example.com: BSD-Mail kodiert den Header nicht korrekt, versendet die Mail aber, Postfix hat kein Problem, Procmail kann damit nicht umgehen.
korrigiere, hatte was falsches in die Alias-Tabelle geschrieben, Procmail kann auch damit umgehen.
mfg
Woodfighter
Hallo,
Ich habe ein Skript (siehe unten),
Ohje, das stammt mit Sicherheit aus dem letzten Jahrtausend, kein Witz.
Wenn der Submit angeklickt wird, werden die Eintragungen überprüft und bei Richtigkeit als E-Mail versannt.
"versandt" meinst du wahrscheinlich.
Nun möchte ich, dass das Skript so umgeschrieben wird, dass beim Anklicken des Submit nach der Überprüfung nicht die Daten als E-Mail versannt werden, sondern die Internetseite im iFrame angezeigt wird.
Du meinst, du möchstest lernen, wie du es so umschreiben kannst.
Was der Submit-Button tut, seht im Attribut namens "action" des Form-Tags:
<form action="mailto:Ihre@mail.de?SUBJECT=Betreff für die Mail">
Dieses könntest du z.B. ändern. Was in einem iFrame angezeigt wird, wird durch seine .src-Eigenschaft bestimmt.
Aber wenn du das Formular gar nicht an den Server schicken willst, brauchst du auch keinen Submit-Button. Du willst ja anscheinend statt Abschicken lieber etwas im iFrame anzeigen lassen. Dafür tut's auch ein normaler Button, der onclick die src-Eigenschaft des iFrame entsprechend setzt.
Und Ekki hat natürlich recht: Ob die eingegebenen Daten gültig sind, kann man nicht wirklich über JavaScript feststellen. Es könnte abgeschaltet oder manipuliert sein. Sowas sollte immer auf vom Server geprüft werden.
Gruß, Don P
Hi,
Wenn der Submit angeklickt wird, werden die Eintragungen überprüft und bei Richtigkeit als E-Mail versannt.
nein. Die Daten werden aus dem Browser heraus dem Betriebssystem übergeben, welches dann versucht, ein Programm zu finden, welches damit *irgend* etwas anfängt - was auch immer das sein mag. Es könnte beispielsweise alle Daten verwerfen und eine Mail versenden, sie als Attachment an eine Mail anhängen, ein Mailfenster anbieten, einfach nur ein Mailprogramm öffnen, oder, was beispielsweise bei mir der Fall wäre, gar nichts tun, weil ich kein entsprechendes Programm installiert habe.
mailto-Formulare haben noch nie funktioniert, und ich sehe derzeit nicht die geringste Perspektive, dass sie es jemals tun werden.
Cheatah
Hier habe ich noch einmal das Skript.
Ich wollte keine E-Mail versenden, sondern nach der Überprüfung eine neue Seite aufrufen. Weil ich aber dieses Skript im Internet gefunden habe, weis ich nicht, wie das es umgeschrieben werden muß.
Ich glaube, dass nur dieser Teil umgeschrieben werden muß.
<form name="form" enctype="text/plain" onSubmit="return mail( this.form )">
<SCRIPT LANGUAGE="JavaScript">
function validate_form() {
validity = true;
if (!check_empty(document.form.NAME.value)){ /* Funktion Namen (Abfrage) */
validity = false;
show('Layer1');show('Layer2'); /* zeige Fehler */
}
if (!check_email(document.form.EMAIL.value)){ /* Funktion EMail (Abfrage) */
validity = false;
show('Layer1');show('Layer3'); /* zeige Fehler */
}
if (!check_url(document.form.URL.value)){ /* Funktion URL (Abfrage) */
validity = false;
show('Layer1');show('Layer4'); /* zeige Fehler */
}
if (!check_empty(document.form.DESCRIPTION.value)){ /* Funktion Comment (Abfrage) */
validity = false;
show('Layer1');show('Layer5'); /* zeige Fehler */
}
if (validity);
return validity; /* alle Angaben waren korrekt */
}
function check_empty(text) {
return (text.length > 0); /* gibt false zurück wenn leer */
}
function check_email(address) { /* Email muss (@ und .) enthalten */
if ((address == "") || (address.indexOf ('@') == -1) || (address.indexOf ('.') == -1))
return false;
return true;
}
function check_url(address) { /* URL muss (http:// und .) enthalten */
if ((address == "") || (address.indexOf ('http://') == -1) || (address.indexOf ('.') == -1))
return false;
return true;
}
if (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0,1)) >=3))
|| ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion.substring(0,1)) >=4)))
{var version=true}
if (document.layers){ /* Browserabfrage: Layer-Object bekannt? */
ns = 1; ie = 0;
}else{
ns = 0; ie = 1;
}
function show(name) {if (ns){ /* Funktion Schicht anzeigen */
document.layers['' + name].visibility = "show";
}else{
document.all['' + name].style.visibility = "visible";
}
}
function hide(name) { /* Funktion Schicht verstecken */
if (ns){
document.layers['' + name].visibility = "hide";
}else{
document.all['' + name].style.visibility = "hidden";
}
}
</SCRIPT>
<form name="form" method="post" action="mailto:Ihre@mail.de?SUBJECT=Betreff für die Mail" enctype="text/plain" onSubmit="return validate_form(this.form)">
<table width="750">
<tr>
<td width="130" align="right" valign="top">
<font face="Arial"><span style="font-size:12pt;"><b>Name:</b></span></font>
</td>
<td width="360" align="right" valign="top">
<input type="text" name="NAME" style="width:350px;">
</td>
<td>
<div id="Layer2" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:10pt;"><b>Bitte Name angeben!</b></span></font></div>
</td>
</tr>
<tr>
<td width="130" align="right" valign="top">
<font face="Arial"><span style="font-size:12pt;"><b>Email:</b></span></font>
</td>
<td width="360" align="right" valign="top">
<input type="text" name="EMAIL" style="width:350px;">
</td>
<td>
<div id="Layer3" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:10pt;"><b>E-Mail nicht korrekt!</b></span></font></div>
</td>
</tr>
<tr>
<td width="130" align="right" valign="top">
<font face="Arial"><span style="font-size:12pt;"><b>URL:</b></span></font>
</td>
<td width="360" align="right" valign="top">
<input type="text" name="URL" style="width:350px;">
</td>
<td>
<div id="Layer4" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:10pt;"><b>URL nicht korrekt!</b></span></font></div>
</td>
</tr>
<tr>
<td width="130" align="right" valign="top">
<font face="Arial"><span style="font-size:12pt;"><b>Beschreibung:</b></span></font>
<br>
</td>
<td width="360" align="right" valign="top">
<TEXTAREA NAME="DESCRIPTION" style="width:350px; height:100px"></TEXTAREA>
</td>
<td>
<div id="Layer5" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:10pt;"><b>Bitte Beschreibung angeben!</b></span></font></div>
</td>
</tr>
<tr>
<td colspan="2" height="40" width="490">
<div id="Layer1" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:11pt;"><b>Bitte überprüfe noch einmal deine Eingaben!</b></span></font></div>
</td>
<td height="40">
<p> </p>
</td>
</tr>
<tr>
<td colspan="3">
<input type="submit" value="Submit" onclick="hide('Layer1');hide('Layer2');hide('Layer3');hide('Layer4');hide('Layer5')" style="font-size:x-large;">
<input type="button" value="Button" onClick="Ortsbestimmung.location.href='http://www.google.de';"><p> </p>
</td>
</tr>
</table>
</form>
<iframe width="700" height="300" name="Ortsbestimmung" marginheight="0" marginwidth="0" frameborder="0">
</iframe>
Hallo Herbert,
Hier habe ich noch einmal das Skript.
warum nochmals. Einmal genügt, was Du doch inzwischen wissen solltest.
Weil ich aber dieses Skript im Internet gefunden habe, weis ich nicht, wie das es umgeschrieben werden muß.
Du hast ein sensationelles Talent dafür, völlig veraltete und untaugliche Skripte auszugraben.
</archiv/2010/3/t195769/#m1310665>
</archiv/2010/3/t196177/#m1314052>
</archiv/2010/10/t200889/#m1354267>
Warum vergeudest Du soviel Zeit dafür, solche Antiquitäten auszugraben. Viel sinnvoller investiertest Du diese Zeit in das Erlernen von ein paar Grundlagen.
</archiv/2010/6/t198436/#m1333027>
Freundliche Grüße
Vinzenz
@@Herbert1204:
nuqneH
Ich habe ein Skript (siehe unten)
Aus welchem Museum auch immer du das geholt hast, bring es bitte wieder dorthin zurück!
Browserweichen mit document.all
oder document.layers
sind Unfug. Browserweichen mit navigator.appName
sind Unfug. Browserweichen mit "Netscape"
sind Unfug.
<SCRIPT LANGUAGE="JavaScript">
Das @language-Attribut ist Unfug. Dafür fehlt (außer in HTML5) das @type-Attribut. [http://de.selfhtml.org/javascript/intro.htm#javascriptbereiche@title=SELFHTML]
function check_email(address) { /* Email muss (@ und .) enthalten */
if ((address == "") || (address.indexOf ('@') == -1) || (address.indexOf ('.') == -1))
return false;
return true;
}
Die Implementierung ist Unfug. "john.doe@example" besteht den Test.
Entweder man verlangt keinen '.' nach '@', dann aber überhaupt nicht auf '.' prüfen. Oder man prüft, ob ein '.' _nach_ dem '@' vorkommt, und nicht irgendwo.
function check_url(address) { /* URL muss (http:// und .) enthalten */
if ((address == "") || (address.indexOf ('http://') == -1) || (address.indexOf ('.') == -1))
return false;
return true;
}
Das ist Unfug. Manche URIs beginnen – aus gutem Grund – mit "htpps://".
Qapla'
Moin,
Manche URIs beginnen – aus gutem Grund – mit "htpps://".
ach tatsächlich? Solche sind mir noch nicht untergekommen. :-)
Ciao,
Martin