php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.02.2011, 19:58  
Neuer Benutzer
 
Registriert seit: 30.06.2010
Beiträge: 25
PHP-Kenntnisse:
Anfänger
Nicole ist zur Zeit noch ein unbeschriebenes Blatt
Standard Mein JavaScriptformular - Daten checken und Umlaute

Hallo zusammen!

Ich komme mittlerweile nicht mehr weiter. Ich versuche mich gerade an einem Formular, das mit JS gecheckt werden soll. Hat man es ausgefüllt, soll es auf eine andere Seite weiterleiten. Dass das so nicht schön ist, weiß ich, aber das ist grad meine Aufgabe *s*

Mein Formular sieht nun grade so aus:
Code:
<form onReset="return eingabenloschen()">
<div class="formrow">
	<div class="inputtitle">Name:</div>
    <div class="inputfield"><input type="text" name="name" value="" onBlur="ausgabe('name')" onMouseOver="eingabehilfe('name')" onMouseOut="eingabehilfeentfernen()" /></div>
    <div id="meldung_name" class="meldung">Pflichtangabe</div>
</div>
<div class="formrow">
	<div class="inputtitle">E-Mailadresse:</div>
    <div class="inputfield"><input type="text" name="email" value="" onBlur="ausgabe('email')" onMouseOver="eingabehilfe('email')" onMouseOut="eingabehilfeentfernen()" /></div>
    <div id="meldung_email" class="meldung">Pflichtangabe</div>
</div>
[...]
<div class="formrow">
	<div class="buttons">
    	<input type="button" value="Senden" name="senden" onclick=" return anmeldungabsenden()"/>
        <input type="reset" value="Eingaben löschen" name="loschen" />
    </div>
</div>
</form>
Immer, wenn man ein Feld verlässt, wird eine Funktion "ausgabe" aufgerufen. Die sieht so aus:
Code:
function ausgabe(eingabefeld) {
	meldungsfeld = "meldung_" + eingabefeld;
	feldinhalt = document.getElementsByName(eingabefeld)[0].value;
	switch(eingabefeld) {
		case("name"):
			//TO DO: Zahlen ausschließen
			if(feldinhalt == "" || feldinhalt.length < "2" || namensreg.test(feldinhalt) != true) {
				document.getElementById(meldungsfeld).innerHTML = 'Bitte geben Sie einen korrekten Namen an.';
				document.getElementById(meldungsfeld).style.color = fehlerschriftfarbe;
				document.getElementsByName("name")[0].style.backgroundColor = fehlerhintergrundfarbe;
				return false;
			}
			else {
				document.getElementById(meldungsfeld).innerHTML = "Danke für die Eingabe ihres Namens.";
				document.getElementById(meldungsfeld).style.color = normaleschriftfarbe;
				document.getElementsByName("name")[0].style.backgroundColor = normalehintergrundfarbe;
			}
			break;
		case("email"):
			//TO DO: auf xxx@xxx.xxx prüfen
			if(feldinhalt == "" || feldinhalt.length < "6" || emailreg.test(feldinhalt) != true) {
				document.getElementById(meldungsfeld).innerHTML = 'Bitte geben Sie Ihre E-Mailadresse korrekt ein.';
				document.getElementById(meldungsfeld).style.color = fehlerschriftfarbe;
				document.getElementsByName("email")[0].style.backgroundColor = fehlerhintergrundfarbe;
				return false;
			}
			else {
				document.getElementById(meldungsfeld).innerHTML = "Danke für die Eingabe ihrer E-Mailadresse.";
				document.getElementById(meldungsfeld).style.color = normaleschriftfarbe;
				document.getElementsByName("email")[0].style.backgroundColor = normalehintergrundfarbe;
			}
			break;
}
}
Das funktioniert auch wie gewünscht. Mein Problem ist nun, dass beim Absenden des Formulars zwar alles gecheck wird, aber ungeachtet der Ergebnisse wird die Weiterleitung aktiviert. Die Funktion, die beim Buttonklick aufgerufen wird ist die:
Zitat:
function anmeldungabsenden() {
return true;
ausgabe('name');
ausgabe('email');
ausgabe('geburtstag');
ausgabe('lieblingsfarbe');
ausgabe('kleidungsstil');
ausgabe('anmerkung');
ausgabe('hobby');
window.location.href = "b_hundetraining.html?name=" + document.getElementsByName('name')[0].value;
}
Leider klappt es wie gesagt nicht und mit den return-Werten sinds bei mir eher Blindschüsse. Mir ist noch nicht klar, wie das genau funktioniert ^^"

Ich denke, die Lösung wird ziemlich einfach sein, aber ich kriege sie einfach nicht zu fassen... Kann mir jemand helfen und sagen, wie ich das nun handhaben muss?

Außerdem werden Umlaute nicht richtig dargestellt. Dabei benutze ich im HTML-Code sogar die folgenden Codes, von denen ichdachte, dass es alles ist, was ich brauche, damit alles UTF-8-konform ist... Einen Screen seht ihr im Anhang.

Edit:
Zitat:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
[...]
<script type="text/javascript" src="a_eingabeerklarungen.js" charset="utf-8"></script>
<script type="text/javascript" src="a_formular.js" charset="utf-8"></script>
Ich wäre sehr froh, wenn ihr mir helfen könnt. ^^ Dankeee!

Grüße
Nicole
Miniaturansicht angehängter Grafiken
mein-javascriptformular-daten-checken-und-umlaute-utf8.jpg  

Geändert von Nicole (16.02.2011 um 20:26 Uhr). Grund: Hab die UTF-8-Codes vergessen
Nicole ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.02.2011, 20:01  
Neuer Benutzer
 
Registriert seit: 13.02.2011
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
Laberkopp befindet sich auf einem aufstrebenden Ast
Standard

Was du suchst ist onSubmit für das form-Element. Für die Umlaute brauchst du überall einheitliche Zeichensätze. Außerdem hat es sich bewährt, Umlaute als HTML-Code darzustellen, also &auml; usw.
Laberkopp ist offline   Mit Zitat antworten
Alt 16.02.2011, 20:07  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Zitat:
Zitat von Laberkopp Beitrag anzeigen
Außerdem hat es sich bewährt, Umlaute als HTML-Code darzustellen, also &auml; usw.
Einspruch - das ist in Zeiten von UTF-8 Unfug. Heutzutage kann man ruhig auch Umlaute ausschreiben. Man muss halt nur sicherstellen, dass man überall den richtigen Zeichensatz verwendet.

@Nicole: Du hast Deine Datei offensichtlich im falschen Zeichensatz abgespeichert.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 16.02.2011, 20:09  
Neuer Benutzer
 
Registriert seit: 13.02.2011
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
Laberkopp befindet sich auf einem aufstrebenden Ast
Standard

Wenn man alles richtig macht, ist das auch kein Problem. Allerdings zeigt es sich immer wieder, dass Leute Probleme haben, ihre Zeichensätze korrekt zu konfigurieren.
Laberkopp ist offline   Mit Zitat antworten
Alt 16.02.2011, 20:11  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Das heißt doch aber nicht, dass man sich dann mit krummen Umwegen behelfen sollte. Das hat doch wirklich was von Symptomdoktorei. Was willst Du sonst machen, wenn Du mal irgendwas ausgeben willst, was keine HTML-Entität hat? Willst Du da ernsthaft mit numerischen Entitäten schmeißen? Das kann am Ende doch kein Schwein mehr lesen...

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 16.02.2011, 20:11  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Nicole Beitrag anzeigen
Code:
function anmeldungabsenden() {
return true;
ausgabe('name');
ausgabe('email');
...
}
Leider klappt es wie gesagt nicht und mit den return-Werten sinds bei mir eher Blindschüsse. Mir ist noch nicht klar, wie das genau funktioniert ^^"
„Noch nicht ganz“ - wohl eher noch überhaupt nicht.

Mit dem gezeigten Code würde die Funktion sofort in der ersten Zeile wieder verlassen, und damit alle Aufrufe von ausgabe in den nachfolgenden Zeilen überhaupt nicht mehr ausgeführt werden ...

http://www.php.de/php-einsteiger/489...nsammlung.html (Lerne Grundlagen | Quellensammlung)
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 16.02.2011, 20:33  
Neuer Benutzer
 
Registriert seit: 30.06.2010
Beiträge: 25
PHP-Kenntnisse:
Anfänger
Nicole ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke schoneinmal für die schnellen Antworten

Also wenn ich nun alle Umlaute Codieren muss... Das kanns doch nicht sein ôo
Wie find ich denn heraus, in welcher Codierung ich die Datei gespeichert habe? Im Header steht doch schon "charset=UTF-8" (Das habe ich im Edit noch ergänzt)...

An ein onSubmit habe ich auch schon gedacht. Aber da habe ich trotzdem das Problem, dass ich weitergeleitet werde, egal was ist.
Das "return true" in der absenden-Funktion könnt ihr euch auch wegdenken - es wird auch ohne diese Angabe gesendet.

Ich werd nochmal in die Links von ChrisB schauen, aber viel Hoffnung hab ich nicht, da ich schon länger nach ner Lösung suche und vielleicht einfach zu doof bin, sie zu erkenen.... ^^"

Grüße
Nicole ist offline   Mit Zitat antworten
Alt 16.02.2011, 20:42  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Nicole Beitrag anzeigen
Wie find ich denn heraus, in welcher Codierung ich die Datei gespeichert habe?
Dazu solltest du dir eigentlich vorher schon Gedanken gemacht haben ...!

In deinem Editor solltest du das irgendwo nachschauen können.

Zitat:
Im Header steht doch schon "charset=UTF-8"
Das ist nur die Angabe, wie dir Daten interpretiert werden sollen.

Wenn du auf ein Glas Gurken ein Schild drauf klebst, auf dem „Erdbeeren“ steht - dann ändert das trotzdem nichts daran, dass im Glas weiterhin Gurken drin sind. Du musst schon wirklich Erdbeeren hinein tun (die Daten in der richtigen Kodierung abspeichern), damit das zusammen passt.

Zitat:
An ein onSubmit habe ich auch schon gedacht. Aber da habe ich trotzdem das Problem, dass ich weitergeleitet werde, egal was ist.
Du musst false zurückgeben, wenn du das Absenden unterbinden willst.

http://de.selfhtml.org/javascript/sp...r.htm#onsubmit
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 17.02.2011, 20:37  
Neuer Benutzer
 
Registriert seit: 30.06.2010
Beiträge: 25
PHP-Kenntnisse:
Anfänger
Nicole ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hey zusammen!

Tut mir leid, dass ich mich so doof anstelle, aber ich weiß echt nicht, wie ich nun schauen kann, wie das tatsächliche Format meiner Datei ist. Ich bekomme nur UTF-8-Angaben, wenn ich die Seiteninfos aufrufe...
Ich habe die Datei mal hier hochgeladen. Ist das nun UTF-8 oder nicht? *sehrverwirrtist*

Mir ist klar, dass ich einen false-Wert übergeben muss. Jedoch möchte ich nun nicht die gesamten Abfragen ,die ich ja schon Feld für Feld in eigenen Funktionen habe, nochmal schreiben. Darum rufe ich beim Klick auf den Submit-Button eine Funktion (anmeldungabsenden()) auf, die die Formularfeld-Prüf-Funktion (ausgabe()) für jedes Feld aufruft.
Vielleicht habe ich auch nur einen Denkfehler irgendwo, den ich nicht finde...

Grüße
Nicole
Nicole ist offline   Mit Zitat antworten
Alt 18.02.2011, 02:56  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.865
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Ich weiß ja nicht womit du deine Internetseiten "zusammenbrätst", aber nutze doch Editoren die zumindest in der Lage sind darzustellen als was sie Speichern, bzw. dir eine Methode bereitstellen die dich darüber entscheiden lässt in welchem Encoding zu speichern ist.

N++ ( Notepad++ ) kann das.
http://notepad-plus-plus.org/

Es ist wie schon beschrieben ein großer Unterschied zwischen "als was wurde der Inhalt in die html-datei geschrieben" und "als was soll der Browser den inhalt der datei behandeln".
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Tabelle soll nach X Einträgen neue Zeile anfangen raws18 PHP Einsteiger 6 10.02.2011 17:19
Vie Formular empfangene Daten berarbeiten und an remote PHP Skript senden fr3sh PHP Einsteiger 4 27.01.2011 10:20
[Erledigt] Umlaute (&amp;auml;) umwandeln chr1s-eg PHP Einsteiger 10 24.01.2011 12:41
Umlaute, Webservice und Codierung alwig PHP-Fortgeschrittene 2 23.12.2010 19:23
mehrere Daten von Tabelle gleichzeitig eintragen Mario75 PHP Einsteiger 3 27.11.2010 12:49
[Erledigt] geänderte Daten übergeben ? danyh Datenbanken 3 17.03.2010 12:00
Umlaute und MySQL4.1 Datenbanken 2 15.11.2009 15:28
[Erledigt] Kann keine Umlaute im mysql client eingeben Oger Datenbanken 9 02.04.2009 11:54
Website in XML-Format öffnen und Daten in DB schreiben...aber nur wie ? Oli Krause PHP Tipps 2009 11 22.03.2009 12:36
speicherung der daten bei stromausfall? MrCavity Datenbanken 2 19.11.2005 17:39
[Erledigt] sql daten für einen kunden auslesen/ändern im Formular PHP Tipps 2005-2 3 12.10.2005 08:36
[Erledigt] Daten aus mehreren Tabellen holen Datenbanken 0 19.09.2005 17:14
Daten auslesen und ändern Datenbanken 2 17.09.2005 19:28
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
javascript formular sonderzeichen, javascript formular umlaute entfernen, javascript umlaute input value, value umlaute input, javascript formular umlaute, javascript utf8 formularfelder mit umlauten, file formular feld checken auf inhalt php, js umlaute, geänderte formularfelder erkennen jscript, java form umlaute, js input text umlaute speichern, javascript ü input, \text/html\ input field javascript interpretieren, input value sonderzeichen, javascript form input umlaut, formular sonderzeichen javascript, javascript value umlauts, javascript formulardaten auslesen getelementsbyname, javascript umlaute eingabe, utf8 javascript meldungen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum