Formularfeld mit vordefiniertem Wert

Moin moin zusammen,

auf meiner Webseite http://www.kinderflohmaerkte.de/termine.php?tpl=form… fordere ich von meinen Besuchern per Formular diverse Angaben an, unter anderem die URL, wenn sie denn eine Webseite haben.

Beim Ausfüllen versäumen einige http:// davorzusetzen.

Ich möchte, dass das http:// schon beim Öffnen des Formulars drin steht. Wie das funktioniert weiß ich zwar, aber:

Benutzer die keine Webseite haben, belassen das http:// in dem Feld, was vom Script als Eingabe gewertet wird. Es wird dann als Link auf http:// in die Datenbank geschrieben, was natürlich im Nichts endet.

Frage: Gibt es ein (Java)Script mit dem man entweder beim Übermitteln der URL prüfen kann ob http:// davor steht? Wenn nein: davorsetzen, wenn ja nichts tun?

Oder ein Script was http:// nur einblendet, nicht aber als Daten einträgt. Quasi als Hinweis für den Benutzer das davor setzen zu müssen? Ich habe bereits versucht in die Beschriftung davor reinzuschreiben „Bitte mit http:// eingeben“, das beachten aber die Wenigsten.

Ich hoffe, ich habe mich verständlich ausgedrückt.

Vielen Dank im Voraus.

Gruß, meslemicha

Zusatzhinweis
Eine mögliche Variante wäre auch ein Script, welches automatisch http:// einfügt, sobald ein Benutzer das Feld anklickt um dort etwas einzugeben. Derjenige tippt dann einfach weiter…

Jedoch besteht hierbei das Problem, dass durch versehentliches Anklicken des Feldes dann doch nur http:// eingefügt wird und das so stehen bleibt…

Bin gespannt auf Lösungen.
vielen Dank im Voraus.

Gruß, meslemicha

Hallo,

Eine mögliche Variante wäre auch ein Script, welches
automatisch http:// einfügt, sobald ein Benutzer das Feld
anklickt um dort etwas einzugeben. Derjenige tippt dann
einfach weiter…

Jedoch besteht hierbei das Problem, dass durch versehentliches
Anklicken des Feldes dann doch nur http:// eingefügt wird und
das so stehen bleibt…

Habe diesen Vorschlag mal aufgegriffen und eine Lösung gebastelt:

\<!--
function http() {
if (document.form.homepage.value == "") {
 document.form.homepage.value="http://";

 }
}

function homepagetest () {
 if (!document.form.homepage.value == "") {
 if (document.form.homepage.value.indexOf("http://", 0)) {
 alert("ACHTUNG:, ''http://'' vor Ihrer Internetadresse fehlt oder ist fehlerhaft!");
 return false;
 }
 if (document.form.homepage.value.length == 7) {
 document.form.homepage.value = "";
 }
 }
}
//--\>

und in das Input-Feld schreibst Du noch rein:

onFocus="javascript:http();" onBlur="javascript:homepagetest();"

Funktionsweise:
Klickt der Besucher in das Feld „Homepage“, wird automatisch „http://“ eingefügt, solange noch nichts anderes drin steht. Nun kann die Adresse eingetragen werden. Beim Verlassen des Feldes erfolgt eine Prüfung, ob die ersten 7 Ziffern aus der Zeichenkette „http://“ bestehen, falls nicht, Fehlermeldung (damit das „http://“ nicht versehentlich überschrieben wird). Trägt der Besucher hier keinen weiteren Text ein, wird auch das „http://“ wieder aus dem Feld gelöscht.

Das funktioniert soweit alles, wie es soll, jedoch eine Kleinigkeit finde ich momentan nicht: beim anklicken des Feldes „homepage“ wird zwar das „http://“ eingefügt, allerdings springt der Cursor vor den eingefügten Text, sodaß der Besucher mit der Maus nochmals an’s Textende klicken muß, um seine Homepage-Adresse zu vervollständigen. Dazu habe ich im Moment aber leider keine Lösung parat, vielleicht kann da jemand anders weiterhelfen?

Viele Grüße,
Kerstin

Hi meslemicha,

Du könntest entweder vor dem Eintragen in die Datenbank per PHP mit:

$weblink=$\_POST['link'];
if (strlen($weblink)
oder in JS in Deiner Funktion "pruefen" mit:


    
    var ishttp = f.link.value;
    if(ishttp.length
    die Länge des Strings überprüfen.
    Da die kürzeste Domain ohne http:// 8 Zeichen hat sollte nichts schief gehen. Dann noch ein check ob die ersten 7 Zeichen "http://" sind und bei Bedarf dazugeben.
    Der Wert http:// muß natürlich vorher als value in dem Feld drinstehen.
    
    CU Fr@nkie
    
    The Truth Is Out There... ;o)

Hallo Ihr beiden,

vielen Dank für die Vorschläge.

Kerstin, Deiner funktionierte aber leider nicht und Frankies war mir erstmal ein wenig zu abstrakt und schwierig. Ich bin ja des Programmierens nicht mächtig. Leider.

Dann habe ich zum x-ten Mal gegoogelt und diese Seite gefunden:

http://javascriptkit.com/script/script2/cleardefault…

Mein Englisch hilft mir immer mal weiter. Und Ausprobieren!

Das ist mein working-try:

/*
Based on Clear default form value script- by JavaScriptKit.com
Featured on JavaScript Kit (http://javascriptkit.com)
Visit javascriptkit.com for 400+ free scripts!
Modified by Michael Franke, webmaster at kinderflohmaerkte.de
Function: value will be inserted when entering form field
*/

function insertText(thefield){
if (thefield.defaultValue==thefield.value)
thefield.value = „http://“
}

Das Formular dann so:

test

Der Cursor bleibt sogar hinter dem value.

Jetzt müsste nur noch eine Überprüfung rein:
Wenn das Feld verlassen wird, aber nur zehn oder weniger Zeichen drin stehen, dann setze es wieder zurück.

Das kann ich leider nicht programmieren oder ausprobieren.

Könnt Ihr mir da nochmal helfen, bitte?!
Vielen Dank im Voraus.
Gruß, Michael

Jetzt müsste nur noch eine Überprüfung rein:
Wenn das Feld verlassen wird, aber nur zehn oder weniger
Zeichen drin stehen, dann setze es wieder zurück.

Das kann ich leider nicht programmieren oder ausprobieren.

Könnt Ihr mir da nochmal helfen, bitte?!
Vielen Dank im Voraus.
Gruß, Michael

Ich habe mal versucht Kerstins homepagetest zu übernehmen. Klappt wirklich nicht. Erst dachte ich, dass das Ausrufezeichen vor dem ersten Erscheinen von document den Fehler verursacht, aber daran liegts nicht.

Kann mir da dann wirklich jemand helfen, bitte?
Danke. Michael

Hallo Michael,

auf Deiner Seite bzw. im Quelltext steht irgendwo die Javascript Funktion „prüfen“. Die geht so los:
function pruefen(sendArt){
var f=document.eingabe;
var fehler="";
Ab hier gibst Du das hier ein.

// ERKLÄRUNG \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
// Der Inhalt aus dem Eingabefeld "Link zur Webseite" das den Namen "link" hat wird der Variablen "ishttp" übergeben.
var ishttp = f.link.value;
// Es wird mit der if-Abfrage überprüft ob der Inhalt in der Variabel kleiner als 8 Zeichen ist.
if(ishttp.length
Ende des benötigten Scripts.

Ob Du nun vorher schon "http://" in dem Eingabefeld stehen hast ist dann wurscht. Wenn es nicht drin steht wird es nachgetragen.
Den Text mit den // am Anfang kannst Du wahlweise drinstehen lassen oder (besser) löschen.

CU Fr@nkie

The Truth Is Out There... ;o)

Moin Fr@nkie,

ich habe das hin und her versucht - es klappt nicht.

Hier mal das JavaScript aus meiner Seite in einer separaten HTML-Datei zum testen…

Vielen Dank im Voraus.
Gruß, meslemicha

Untitled Document

/*
Based on Clear default form value script- by JavaScriptKit.com
Featured on JavaScript Kit (http://javascriptkit.com)
Visit javascriptkit.com for 400+ free scripts!
Modified by Michael Franke, webmaster at kinderflohmaerkte.de
Function: value will be inserted when entering form field
*/

function insertText(thefield){
if (thefield.defaultValue==thefield.value)
thefield.value = „http://“
}

<!–

function pruefen(sendArt){
var f=document.eingabe;
var fehler="";

// ERKLÄRUNG ***************
// Der Inhalt aus dem Eingabefeld „Link zur Webseite“ das den Namen „link“ hat wird der Variablen „ishttp“ übergeben.
var ishttp = f.link.value;
// Es wird mit der if-Abfrage überprüft ob der Inhalt in der Variabel kleiner als 8 Zeichen ist.
if(ishttp.length<8){
// Wenn also Du schon voher „http://“ drinstehen hast, das nur 7 Zeichen hatund sonst nix,
// Wird hier der Inhalt in dem Feld „Link zur Webseite“ mit „“ (also nix) überschrieben.
f.link.value="";
// Oder (Der Inhalt hat mehr wie 7 Zeichen)
} else {
// Mit sbustr(0,6) werden die ersten 7 Zeichen aus aus der Variabel „ishttp“ ausgeschnitten.
var linkTeil = ishttp.substr(0, 6);
// Dies if-Abfrage prüft ob die ersten 7 Zeichen anders (ungleich) sind als „http://“
if (linkTeil!=„http://“)
// Wenn ja wird in das Feld „Link zur Webseite“ erst der String(Text) „http://“ geschrieben und dann der eigentlichen Inhalt, der hoffentlich so www.xxx.de oder ählich aussieht.
f.link.value=„http://“+ishttp;
}

if(f.name.value==""){
fehler += „Das Feld Name ist nicht ausgef1⁄2llt\n“;
}
if(f.vorname.value==""){
fehler += „Das Feld Vorname ist nicht ausgef1⁄2llt\n“;
}
if(f.email.value==""){
fehler += „Das Feld E-Mail ist nicht ausgef1⁄2llt\n“;
}
if(f.titel.value==""){
fehler += „Das Feld Titel ist nicht ausgef1⁄2llt\n“;
}
if((f.datum_am_tag.selectedIndex==0 || f.datum_am_monat.selectedIndex==0) && (f.datum_von_tag.selectedIndex==0 || f.datum_von_monat.selectedIndex==0 || f.datum_bis_tag.selectedIndex==0 || f.datum_bis_monat.selectedIndex==0)){
fehler += „Die Eingabe des Veranstaltungsdatums ist nicht korrekt\n“;
}
if((f.mail_typ[0].checked||f.mail_typ[1].checked || f.mail_typ[2].checked) && f.mail.value==""){
fehler +=„F1⁄2r einen Info-, Karten oder Anmeldekontakt wird die E-Mail-Adresse des Veranstalters benñtigt.\n“
}

if(fehler!=""){
var fehlertext=„Die Eingaben sind unvollstîndig:\n“;
fehlertext +=fehler;
alert(fehlertext);
return false
}else{
if(sendArt==‚js‘){
window.open(’#’,‚WindowAntwort‘,‚width=500,height=400 toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes‘);
}
return true
}
}

var db_ort = new Array()
var db_plz = new Array()

db_ort[0]="";
db_plz[0]="";

function WriteOrt(idx){

document.eingabe.plz.value=db_plz[idx]
document.eingabe.ort.value=db_ort[idx]

}
//–>

Test

Hi mesle,

endweder muß das Eingabefeld link heißen oder textfield heißen.
Wenn Du das Eingabefeld für die Website nun umbenannt hast, muß im script natürlich auch der Feldname von link bzw f.link.value auf f.textfield.value umbenannt werden.

Also entweder so:

var ishttp = f.link.value;
if(ishttp.length
Oder so:


    
    var ishttp = f.textfield.value;
    if(ishttp.length
    
    Wenn es nicht klappen solltest, kannst Du mir aber auch den Quelltext senden und ich bau es Dir dort ein.
    
    CU Fr@nkie
...
 \<!--
 function f\_checkHttp( oField ) {
 oField.value = oField.value.replace(/http:\/\//, "");
 if ( oField.value.length ) oField.value = "http://".concat( oField.value );
 }
 //--\>
...

...

Hallo Michael,

Kerstin, Deiner funktionierte aber leider nicht und Frankies
war mir erstmal ein wenig zu abstrakt und schwierig. Ich bin
ja des Programmierens nicht mächtig. Leider.

Was? Wieso soll das nicht funktionieren? Also bei mir klappt es problemlos!

Hier nochmal das komplette HTML-Dokument:

Homepagetest
\<!--
function http() {
if (document.form.homepage.value == "") {
 document.form.homepage.value="http://";

 }
}

function homepagetest () {
 if (!document.form.homepage.value == "") {
 if (document.form.homepage.value.indexOf("http://", 0)) {
 alert("ACHTUNG:, ''http://'' vor Ihrer Internetadresse fehlt oder ist fehlerhaft!");
 return false;
 }
 if (document.form.homepage.value.length == 7) {
 document.form.homepage.value = "";
 }
 }
}
//--\>

Vielleicht hast Du ein Feld falsch benannt???

Grüße,
Kerstin