Archiv verlassen und diese Seite im Standarddesign anzeigen : fehler meldung bei mehr als einer variablen
Stifler
17.08.2004, 15:48:12
hi
hab da ein problem und zwar möchte ich wenn ich auf speichern klicke das überprüft wird ob die variablen werte enthalten und wenn sie das nicht tun soll eine javascript meldung erscheinen. das klapte bis jetzt einwandfrei.
aber nun möchte ich das er 3 variablen abcheckt. mit einer variablen funktioniert es aber bei 3 bringt er mir ne fehlermeldung das ein ; erwartet wird in einer zeile wo nix steht. nehm ich die zwei else anweisungen weg funtioniert es ohne fehler.
kapier es irgendwie net, sieht von euch jemand nen fehler wieso es mit 3 variablen net klapt?
function confirmSave()
{
name = '<?php echo $n_name; ?>';
erfasser = '<?php echo $n_erfasser_n; ?>';
kd = '<?php echo $n_kd_li_nr; ?>';
if (name == ''){
alert('Das Pflichtfeld Name wurde nicht ausgefüllt');
return false;
}
else (erfasser == ''){
alert('Das Pflichtfeld Erfasst durch wurde nicht ausgefüllt');
return false;
}
else (kd == ''){
alert('Das Pflichtfeld Kd/Li-Nr wurde nicht ausgefüllt');
return false;
}
else{
return true;
}
}
diver-network
17.08.2004, 15:55:58
Hi,
schau Dir mal Deine if ... else Struktur an...
else (erfasser == ''){
sollte so lauten:
else if (erfasser == '') { // oder elseif, bin gerade nicht sicher
Momentan weiß das Skript nicht, was es mit dem else- Zweig anfangen soll und wird einen Fehler bringen.
HTH,
Andy
Stifler
17.08.2004, 16:00:33
also wenn ich es so schreibe
else if (erfasser == '')
bringt er mir ne fehlende ( was net sein kann
und wenn ich es so schreibe
elseif (erfasser == '')
bringt er mir immer noch den gleichen fehler wie vorher auch :(
habe aber bei den anderen funktionen auch nur else geschrieben und da bringt er keine fehlermeldung
bazubi
17.08.2004, 16:05:56
Du musst auch bei KD == '' das else durch else if ersetzen. Nur beim letzten darf kein if mehr stehen.
Stifler
17.08.2004, 16:12:50
hm ok so bringt er mir schonmal keine fehlermeldung mehr danke mal soweit das andere problem ist das die daten per post geschickt werden und wenn ich auf speichern klicke und in das eingabefeld nen wert geschrieben hab bringt er mir trotzdem die fehlermeldung das das feld leer ist. dachte wenn ich mit $_post mache klapt es aber da sagt er auch das feld sei leer obwohl ein wert drin stehen müßte
so sieht es jetzt aus
function confirmSave()
{
name = '<?php echo $_POST['n_name']; ?>';
erfasser = '<?php echo $_POST['n_erfasser_n']; ?>';
kd = '<?php echo $_POST['n_kd_li_nr']; ?>';
if (name == ''){
alert('Das Pflichtfeld Name wurde nicht ausgefüllt');
return false;
}
else if (erfasser == ''){
alert('Das Pflichtfeld Erfasst durch wurde nicht ausgefüllt');
return false;
}
else if (kd == ''){
alert('Das Pflichtfeld Kd/Li-Nr wurde nicht ausgefüllt');
return false;
}
else{
return true;
}
}
kann es ein das er die id des eingabefeldes braucht?
diver-network
17.08.2004, 16:34:01
Hi,
also mal von vorne und damit ich das verstehe:
Du hast ein Formular mit einem Button. Nach drücken des Buttons soll zuerst die Funktion confirmSave() aufgerufen werden.
Ist alles ok geht es dann weiter.
Falls ich da richtig liege folgender Ansatz (als Anhaltspunkt, mußt Du selber mit Inhalt füllen ;-) ):
button onclick = confirmSave() ODER (besser):
<form name=... action=... onSubmit=confirmSave()>
in der Funktion:
name = document.<form-name>.n_name.value; // Zuweisung des Feldinhalts in eine JS Variable
if....
else...
return true; // oder form.submit();
}
Fertig.
ACHTUNG: Code ist ungetestet und muß von Dir ergänzt werden.
PHP kommt erst NACH dem Absenden des Formulars an den Server zum Einsatz, davor ist alles reines JavaScript!!
HTH,
Andy
P.S.: Verabschiede mich jetzt vom Rechner. Bis morgen wieder.
Stifler
18.08.2004, 11:32:35
hm alles klar so funktioniert das wunderbar er überprüft und speichert anschliesend. nur einen haken hat die sache. wenn ich jetzt auf einen button klicke öffnet er ein neues fenster :( dabei soll er ja stehts das selbe fenster laden. der target befehl stimmt, das frame heist Haupttext
code sieht jetzt so aus
function confirmSave()
{
name = document.test.n_name.value;
erfasser = document.test.n_erfasser_n.value;
kd = document.test.n_kd_li_nr.value;
if (name == ''){
alert('Das Pflichtfeld Name wurde nicht ausgefüllt');
return false;
}
else if (erfasser == ''){
alert('Das Pflichtfeld Erfasst durch wurde nicht ausgefüllt');
return false;
}
else if (kd == ''){
alert('Das Pflichtfeld Kd/Li-Nr wurde nicht ausgefüllt');
return false;
}
else{
return true;
}
}
<FORM target="Haupttext" name="test" ACTION="<?php echo $_SERVER['PHP_SELF']; ?>" METHOD=POST onSubmit="return confirmSave();">
Stifler
18.08.2004, 12:57:17
also ich hab jetzt nochmal alles nachgeschaut und finde keinen fehler. die java abfrage funktioniert er speichert nur wenn die felder ausgefüllt sind und wenn nicht kommt fehler.
problem ist nur er öffnet mir nach der java abfrage bei jedem button den ich drücke ein neues fenster da stimmt zwar der inhalt aber er soll es ja da laden wo es vorher war und net separat öffnen
diver-network
18.08.2004, 13:18:18
Hi,
schön, daß die Formularüberprüfung jetzt klappt, auch wenn Java != JavaScript ;-)
Dein Problem liegt vermutlich daran, daß das HTML- Tag "form" KEIN Attribut "target" kennt sonern nur das Attribut "action".
Schmeiss das mal raus und es sollte klappen. Falls nicht einfach noch mal melden.
HTH,
Andy
P.S.: Ich würde Dir empfehlen, Dich mal etwas mehr mit der Formularverarbeitung im Allgemeinen zu befassen. Schau hierzu mal auf selfhtml nach.
Stifler
18.08.2004, 13:45:54
also bevor ich das target in den form text gepackt hab, hab ich es ohne target probiert und da hatte ich genau das gleiche problem darum steht ja der target drin. ich hab ja noch 2 weiter frames und es klapte bisher ohne problem. hab das auch schon des öfteren gesehen das der target im form tag steht
Java != JavaScript´ist mir auch klar aber das andere schreibt sich halt kürzer *g :P
hab den target jetzt mal rausgeschmissen und es hat sich nix verändert. er öffnet immer noch ein zusätzliches fenster nach dem speicher bzw wenn ich nen datensatz abfrage. ohne die javasc funktion funktioniert es so wie es soll aber mit macht er probleme :(
hab es jetzt auch mal umgeschmissen wie es mir persönlich lieber ist und zwar sieht es jetzt folgendermasse aus
//javascript funktion
function confirmSave()
{
name = document.test.n_name.value;
erfasser = document.test.n_erfasser_n.value;
kd = document.test.n_kd_li_nr.value;
if (name == ''){
alert('Das Pflichtfeld Name wurde nicht ausgefüllt');
return false;
}
else if (erfasser == ''){
alert('Das Pflichtfeld Erfasst durch wurde nicht ausgefüllt');
return false;
}
else if (kd == ''){
alert('Das Pflichtfeld Kd/Li-Nr wurde nicht ausgefüllt');
return false;
}
else{
return true;
}
}
//form tag
<FORM target="Haupttext" name="test" ACTION="<?php echo $_SERVER['PHP_SELF'];?>" METHOD=POST >
//schaltfläche
<TD WIDTH=81 STYLE="background-image: url('../assets/images/hintergrund3.jpg');">
<P><INPUT ID="Schaltfläche9" NAME="save" TYPE=IMAGE BORDER=0 SRC="../assets/images/speichern02.jpg" onClick="return confirmSave();"></P>
</TD>
Stifler
18.08.2004, 14:05:51
Original geschrieben von diver-network
Dein Problem liegt vermutlich daran, daß das HTML- Tag "form" KEIN Attribut "target" kennt sonern nur das Attribut "action".
P.S.: Ich würde Dir empfehlen, Dich mal etwas mehr mit der Formularverarbeitung im Allgemeinen zu befassen. Schau hierzu mal auf selfhtml nach.
will dich ja net dumm anmachen aber ich hab nochmal vorsichtshalber in selfhtml nachgeschaut und ich denke du hast da was überlesen
form und target (http://www.selfhtml.net/html/formulare/definieren.htm#bereich)
fast ganz unten steht es
diver-network
18.08.2004, 14:52:12
Hi,
Sorry, da hab' ich in SelfHTML nicht weit genug gelesen.
Mein Fehler!
Zu Deinem Fehler: Ich werd' jetzt mal daheim nachsehen, wie ich das immer gelöst habe.
Irgendwo ist da noch der Wurm drin, sehen tu ich ihn aber auch nicht. Außer, daß ich jetzt wieder keine Verbindung zwischen Button (warum type=image?, ich dachte, das müsste type="submit" sein) und Formular sehe.
Ich meld' mich morgen wieder und poste mal meinen Code, den ich immer nehme und der funktioniert, außer, es meldet sich noch jemand anderes.
Gruß,
Andy
P.S.: Hast' mich nicht dumm angemacht, ich hab' ja einen Fehler gemacht ;-)
Stifler
18.08.2004, 14:55:08
dachte schon, so verkehrt kann ich net liegen mit dem target :P
achja wenn du willst kann ich dir ja mal den code der seite per mail schicken vielleicht siehst dann mehr.
type image steht drin weil die buttons mit bildern funtkionieren
sprich man hat net so nen grauen normalen button, sondern man kann sich ne grafik als button nehmen
war grad mal auf deiner page, du bist ja auch taucher :)
in 2 wochen werd ich das erste mal ausserhalb deutschlands diven und zwar auf den malediven. warst du da schonmal?
diver-network
18.08.2004, 16:21:53
Hi,
ja, ich bin Taucher, genauer gesagt ein ehemaliger (PADI ist mir zu teuer, wenn ich nicht unterrichte) Tauchlehrer. Auf den Malediven war ich noch nicht, meistens tauche ich in Asien (Thailand, Indonesien, Japan) oder Australien.
Hier mal meine Lösung, die ich immer verwende. Ist zwar nicht perfekt, funktioniert aber bei mir.
<script language="javascript">
<!--
function pruefen(){
var Formular = document.plaetze; // Schreibfaulheit
var fehler = 0; // Variable, um zu verhindern, dass immer alle Ueberpruefungen stattfinden und der User
// eventuell mit mehreren Alert- Boxen genervt wird.
/* ***** Abfrage, ob Felder ausgefuellt sind ******** */
if (fehler == "0" && Formular.platz.value == "") {
alert ("Bitte fügen Sie den Namen des Tauchplatzes ein.");
Formular.platz.focus(); // setzt Focus in betreffendes Feld "platz"
fehler++; // hochzaehlen, damit am Schluss false zurueck gegeben wird und weitere Ueberpruefungen
// nicht mehr durchlaufen werden
}
if (fehler == "0" && Formular.plz.value != ""){
// Weitere Verarbeitungen im Fehlerfall
}
}
}
/*
Endgueltige Abfrage, ob Formular abgesendet werden darf oder nicht
*/
if (fehler == "0") {
return true; // sende Formular
} else {
return false; // sende Formular NICHT
}
}
//-->
</script>
<form action="......" name="plaetze" method="post" onReset="return confirm('Wollen Sie wirklich alle Eingaben löschen?')" onSubmit="return pruefen(this)">
Bitte beachte, daß ich einen anderen Weg als Du gewählt habe. Ich überprüfe jedes Feld einfach und nicht in einer if - else if - Kaskade (oder wie man das nennt).
Wichtig ist am Ende nur, daß Du im Fehlerfall "false" zurück gibst, im Erfolgsfall "true".
Beachte ausserdem, daß in meinem Original eine andere Datei aufgerufen wird, allerdings ist es egal, wo die Formularabarbeitung letzten Endes geschieht.
Wenn Du noch weitere Probleme haben solltest kannst Du mir mal Deinen Sourcecode senden (Email: mein "Spitzname mit A" (siehe unten) at <meine Domain>). Allerdings werde ich erst am Abend dazu kommen, mir das anzusehen. Insofern ist dann eine Verzögerung von 24 h drin.
Besser wäre es, Du stellst den Sourcecode auf eine Webseite und postest hier den Link. Dadurch können Dir auch andere helfen.
Gruß,
Andy
Stifler
19.08.2004, 13:40:52
naja ich werd jetzt das erste mal im meer tauchen und net immer nur im bagersee :)
das mit dem script hat wunderbar funkioniert. habs eingebaut und etwas umgebastelt und es läuft genauso wie es sein soll :)
danke dir
diver-network
19.08.2004, 14:02:07
Hi,
freut mich, daß es jetzt klappt.
Dir viel Spaß im Meer bei hoffentlich guter Sicht, vielen Haien, Mantas und was man sich sonst noch so wünscht.
Gruß,
Andy
vBulletin® v3.8.3, Copyright ©2000-2013, Jelsoft Enterprises Ltd.