Supportnet Computer
Planet of Tech

Supportnet / Forum / Webseiten/HTML

HTML: Popup/Page nur bei richtigem Form-Eintrag zeigen.





Frage

Hi... ^^ ich hab auf meiner website eine Form (textfeld mit einem Button) in der der User seine email eintagen muss. ISt keine email drin, oder eine nicht gültige, kommt per javascript ein alert und eine Variable wird mit einem bestimmten wert belegt. Soweit so gut. Wenn jedoch eine gültige adressse angegeben wird soll ein Popup oder eine Page geöffnet werden, in den anderen Fällen nicht. Ich kann leider nur mit Frontpage 2003 und JavaScript arbeiten Bis Morgen^^

Antwort 1 von rfb

Wo ist das Problem?

Antwort 2 von _mpact

Zitat:
Wenn jedoch eine gültige adressse angegeben wird soll ein Popup oder eine Page geöffnet werden, in den anderen Fällen nicht.


--> Das ist das Problem.
1. Wie bekomm ich ein Popup hin in Frontpage?
2. Wie schaffe ich es das das Popup auch nur erscheint, wenn das JavaScript eine gültige adresse "findet"?.
Mit Firefox wird, wenn eine falsche adresse eingegeben wird zwar der alert angezeigt, aber auch ein Liknk bzw ein Download geöffnet, was aber eigentlich nicht passieren sollte.

Antwort 3 von rfb

zu 1
solchen Müll wie Frontpage lass ich erst gar nicht auf die Festplatte.
übliche PopUp-Vorgehensweise siehe SelfHTML: JavaScript window.open()

zu 2
das ist ja eine Super-Problembeschreibung. Und wenn du jetzt noch den dafür verantwortlichen Quellcode offenbaren würdest könnte man vielleicht auch erahnen woran es liegt.

vielleicht hilft ein Studium dieser Zeilen weiter: Kleine Hilfestellung wie man richtig postet/ einen Thread eröffnet

Antwort 4 von _mpact

Wie gesagt, ich möchte das das Popup (habs mitlerweile hinbekommen) nur dann öffnet, wenn eine gültige Adresse angegeben wurde.
Mit Firefox wird aber bei einer falschen Adresse der alert und das popup gezeigt, was so nich sein sollte. Beim Testen in Frontpage (IE6) funktionierts einwandfrei. Im Prinzip will ich nur sicherstellen, das egal welchen browser der user benutz, gewähleistet is, das die seite auch korrekt funktioniert.

Hier mal der Code in JavaScript der die Eingabe überprüft :



var check;

function checkMail()
{
	var theMail=document.mailForm.email.value;
	if(theMail=="")
	{
	check=1;
	alert("Bitte Mailadresse angeben! " +check);
	}
	var suche=theMail.search(/@test2.com/);
	var search=theMail.search(/@test.de/);
	
	if(suche!= -1 || search!= -1)
	{
	check=3;
	}
	else
	{
	if(theMail!="")
		{
		check=2;
		alert("ungültige Mailadresse " +check);
		}
	}
}


hoffe das genügt jetzt

Antwort 5 von rfb

Zitat:
hoffe das genügt jetzt
nö.

Was soll die Funktion leisten und was tut sie stattdessen?

Was sind gültige Mailadressen?

Warum arbeitet die Funbtion alle Möglichkeiten durch wenn doch schon ein Fall eingetreten ist?

Warum nutzt du das langsame
search
() statt des schnelleren
indexOf
() ? Du setzt doch gar keine regulären Ausdrücke ein.

Antwort 6 von _mpact

steht doch da: Der Code an für sich arbeitet einwandfrei, jedoch gibts da probleme beim ausführen mit firefox --> siehe antwort 4!
Zitat:
Mit Firefox wird aber bei einer falschen Adresse der alert und das popup gezeigt, was so nich sein sollte. Beim Testen in Frontpage (IE6) funktionierts einwandfrei.


Wie man in den search-Anweisungen sehen kann, wird nach dem string "@provider.com" [-> allgemeines Beispiel] gesucht. Is er nicht enthalten, dann werden enstprechende if-Blöcke durchgeführt--> ein alert erscheint.
Ansonsten kommt kein alert!
Demanch ist eine gültie adresse ein solche, die den gesuchten string enthält.

Die Funktion arbeitet alle Möglichkeiten durch, weils bei den paar zeilen Code keinen juckt. Vllt mach ich ne switch-case funktion drauß, aber warscheinlich nicht.

Ich benutze im moment noch search, weil ich keine lust hatte es mit indexOf zu machen, kommt aber noch.! Ich wollte nur mal das es überhaupt was prüft!

Entschuldigung wenn mein Code nicht der elgeganteste ist!
Anstatt weiter körner zu spalten wäre ich diesmal für kosntruktive Lösungsvorschläge dankbar. Wenn das nich möglich is dann einfach sagen.

Im Endeffekt möchte ich nur eine lösung dafür haben:
Es sollte 100%ig gewährleistet sein, das das Popup nur dann geöffnet wird, wenn eine gültige Adresse in das textfeld eingegeben wurde, egal welchen Browser der user benutzt.

Antwort 7 von rfb

nun gut, da das mit dem Nachfragen nicht klappt habe ich lieber gleich mal eine neue Funktion geschrieben.
Rufe checkMail auf, die übergibt die Mailadresse an testmail diese prüft die gültigkeit der Mailadresse und gibt ggf. OK zurück, nur dann ruft checkMail eine Funktion namens popup auf (deren Inhalt müsstest du noch festlegen). Andernfalls gibts einen alert und kein PopUp.

function testMail(mail)
{
if (mail=="") return "Bitte Mailadresse angeben! "; 
if ((mail.indexOf("@test2.com") <0) && (mail.indexOf("@test2.com"<0))
return "ungültige Mailadresse";
return "OK";
}

function checkMail()
{
var status= testMail(document.mailForm.email.value);
if (status!="OK") alert(status);
else popup();
}



Die Übersichtlichkeit hilft nicht nur den Code besser zu verstehen, sondern auch Fehler zu vermeiden. Insofern ist das nicht eine Frage des Stils sondern Grundvoraussetzung für funktionierende Programme. Der IE ist übrigens kein Maßstab für gute Seiten oder Scripte - im Gegenteil!

Antwort 8 von rfb

muss natürlich
mail.indexOf("@test2.com")<0

heißen

Antwort 9 von _mpact

ah.. danke....
schöner Code.
Hab den fehler gemacht, das ich das window.open(...) an den handler 'onmousebuttondown=..' von dem button gehängt hab. Wollts eigentlich posten, aber hab ich wohl vergessen. Klar das du ohne diese Info nich weitergekommen bist.
Hab mal den popup-aufruf in mein ursprüngliches Javascript eingebaut, jetzt funktioniert das auch einwandfrei!

Jetzt machs auch sinn warum firefox immer beides gemacht hat (popup und alert)... Das der IE bei der übesetzung sehr... sagen wir mal "nachsichtig" ist hab ich auch schon gehört, aber das das grad in dem fall zutrifft..

Vielen Dank für deine Hilfe und deine Geduld. War ne schwere geburt auch wenn die Lösung an für sich ziemlich nahe lag ^^