Archivlink: javarea.de Forum > JavaScript > Formulare überprüfen button richtig einbauen
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > Formulare überprüfen button richtig einbauen

Pages: [1]

geschrieben von desaster am 30.01.2008 - 20:04
Ich möchte ein Gästebuch mit wenig Aufwand vor Spamern schützen, also habe ich ein zusätzliches Feld erstellt und dieses sollte leer bleiben (blau markiert). Mit dem Script von euch wollt ich dies erledigen, doch es gelingt mir nicht.

Ich habe den Codeausschnitt unten angefügt, in der Hoffnung jemand von euch findet den Fehler.

THX Desaster

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
<SCRIPT LANGUAGE="JavaScript">
<!--
function validate_form() {
  validity = true; // assume valid
  if (!check_empty(document.form.Leer.value))
        { validity = true; alert('Spamfeld ist voll!'); }
  if (!check_email(document.form.BOO_eMail.value))
        { validity = false; alert('eMail ist ungültig!'); }
    if (validity)
        alert ("Alle benötigten Informationen wurden geprüft. "
                + "Die eingaben wurden als richtig erkannt ");
  return validity;
}

function check_empty(text) {
  return (text.length > 0); // gibt false zurück wenn leer}

function check_email(address) {
  if ((address == "")
    || (address.indexOf ('@') == -1)
    || (address.indexOf ('.') == -1))
      return false;
  return true;
}


// -->
</script>
<table border="0" width="100%">
  <tr>
    <td width="80%" valign="top"><h1>Gästebuch</h1><% =sPageText %></td>
    <td width="20%" valign="middle">
      <div align="right"><img border="0" src="../images/buch.jpg" width="153" height="120"></div></td>
  </tr>
</table>
<br>
<form name="form" method="POST" action="GuestBookEdit.asp?modus=save&idbook=<% =Request.QueryString("IdBook")%>" onSubmit="return validate_form(this.form)">
  <table border="0" width="100%">
    <tr>
      <td valign="top" class="color"><b>Vor- und Nachname</b></td>
      <td class="color"><input type="text" name="BOO_Name" size="47" value="<% =sName %>">*</td>
    </tr>
    <tr>
      <td valign="top" class="color"><b>Ort</b></td>
      <td class="color"><input type="text" name="BOO_Ort" size="47" value="<% =sOrt %>">*</td>
    </tr>
    <tr>
      <td valign="top" class="color"><b>eMail</b></td>
      <td class="color"><input type="text" name="BOO_eMail" size="47" value="<% =seMail %>">*</td>
    </tr>
    <tr>
      <td valign="top" class="color"><b>mein Kommentar</b></td>
      <td class="color"><textarea rows="9" name="BOO_Kommentar" cols="40"><% =sMemo %></textarea>*</td>
    </tr>
    <tr><td><p class="color">Dieses Feld bitte nicht ausfuellen!</p></td>
    <td class="color"><input type="text" name="Leer" size="47" value="">*</td>
    </tr>
    <tr>
      <td valign="top" class="color" colspan="2"><input type="submit" value="speichern" name="save"></td>
    </tr>
  </table>
  &nbsp;
</form>


Bearbeitet Michael, Grund: Source-Code bitte formatiert eingeben

geschrieben von Michael am 08.02.2008 - 14:24
Probier mal folgendes:
HTML-Quelltext
1: 
2: 
3: 
var str_value = document.getElementById("spamfeld").value;

if(str_value.length > 0) return false;


oder einfach

HTML-Quelltext
1: 
if(document.getElementById("spamfeld").value != "")...


Dazu musst du dem Input Feld jedoch eine ID verpassen

HTML-Quelltext
1: 
<input type="text" name="Leer" size="47" value="" id="spamfeld">


Michael

geschrieben von desaster am 08.02.2008 - 19:05
danke für den Tipp

werde gleich nach den Ferien mal schauen obs hilft.

geschrieben von desaster am 28.02.2008 - 21:17
so wieder zurück aus den Ferien aber schon wieder ein tiefschlag es funktioniert immer noch nicht! Gibt es hier im Forum einen JavaScript oder ASP Crack? (Ist ein ASP Script, habe aber keine Ahnung von ASP und deshalb habe ich auf JavaScript gesetzt) Man könnte auch alles in ASP erledigen.

Anbei noch der aktuelle Code(nur Ausschnitte, da ganzes Script 400 Zeilen lang):
PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76: 
77: 

<?
<SCRIPT LANGUAGE="JavaScript">
<!--
function 
validate_form(this.form) {
  
validity true// assume valid
  
var str_value document.getElementById("spamfeld").value;
    if(
str_value.length 0) return false;
            { 
validity falsealert('Spamfeld ist voll!'); }
      if (!
check_email(document.form.BOO_eMail.value))
        { 
validity falsealert('eMail ist ungültig!'); }
    if (
validity)
        
alert ("Alle benötigten Informationen wurden geprüft. "
                
"Die eingaben wurden als richtig erkannt ");
  return 
validity;
}

function 
check_empty(text) {
  return (
text.length 0); // gibt false zurück wenn leer}

function check_email(address) {
  if ((
address == "")
    || (
address.indexOf ('@') == -1)
    || (
address.indexOf ('.') == -1))
      return 
false;
  return 
true;
}
// -->
</script>


<table border="0" width="100%">
  <tr>
    <td width="80%" valign="top"><h1>Gästebuch</h1><% =sPageText %></td>
    <td width="20%" valign="middle">
      <div align="right"><img border="0" src="../images/buch.jpg" width="153" height="120"></div></td>
  </tr>
</table>
<br>
<form name="form" method="POST" action="GuestBookEdit.asp?modus=save&idbook=<% =Request.QueryString("IdBook")%>" onSubmit="return validate_form(this.form)">
  <table border="0" width="100%">
    <tr>
      <td valign="top" class="color"><b>Vor- und Nachname</b></td>
      <td class="color"><input type="text" name="BOO_Name" size="47" value="<% =sName %>">*</td>
    </tr>
    <tr>
      <td valign="top" class="color"><b>Ort</b></td>
      <td class="color"><input type="text" name="BOO_Ort" size="47" value="<% =sOrt %>">*</td>
    </tr>
    <tr>
      <td valign="top" class="color"><b>eMail</b></td>
      <td class="color"><input type="text" name="BOO_eMail" size="47" value="<% =seMail %>">*</td>
    </tr>
    <tr>
      <td valign="top" class="color"><b>mein Kommentar</b></td>
      <td class="color"><textarea rows="9" name="BOO_Kommentar" cols="40"><% =sMemo %></textarea>*</td>
    </tr>
    <tr><td><p class="color">Dieses Feld bitte nicht ausfuellen!</p></td>
    <td class="color"><input type="text" name="Leer" size="47" value="" id="spamfeld">*</td>
    </tr>
<%
    If bWebmaster = True Then
%>
    <tr>
      <td valign="top" class="color"><b>Antwort des Webmasters</b></td>
      <td valign="top" class="color"><textarea rows="5" name="BOO_AnswerWebmaster" cols="40"><% =sAntwort %></textarea></td>
    </tr>
    
<%
    End If
%>
    <tr>
      <td valign="top" class="color" colspan="2"><input type="submit" value="speichern" name="save"></td>
    </tr>
  </table>
  &nbsp;
</form>
?>


geschrieben von Klaush am 28.02.2008 - 22:19
So wie ich das sehe, liegt es nur an deine Bedingung.

hier prüfst du mittels Funktion check_empty(), ob die Bedingung false ist.
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
if (!check_empty(document.form.Leer.value))
  { 
		validity = true; 
		alert('Spamfeld ist voll!'); 
	}


Deine Funktion enhält den Rückgabewert "Anzahl Zeichen > 0"
HTML-Quelltext
1: 
2: 
3: 
4: 
function check_empty(text) 
{
  return (text.length > 0); // gibt false zurück wenn leer
}


Entweder du änderst deine Funktion check_empty() oder deine Bedingung if (!check_empty(document.form.Leer.value)).

Wenn das Feld leer ist, wird der WERT false aus check_empty() zurückgegeben. Die Bedingung if (!check_empty(document.form.Leer.value)) ist damit erfüllt, da du genau das Prüfen möchtest, siehe rot markierte Stelle.

Wenn du das ! entfernen würdest, also so:
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
if (check_empty(document.form.Leer.value))
  { 
		validity = true; 
		alert('Spamfeld ist voll!'); 
	}

dann stimmt auch die Bedingung in deinem Formular .

geschrieben von desaster am 29.02.2008 - 07:19
Ist das so richtig?
Ich habe jetzt eben Bemerkt, dass auch die E-Mailadresse nicht überprüft wird!

Was könnte daran Schuld sein?

PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 

<?
<SCRIPT LANGUAGE="JavaScript">
<!--
function 
validate_form(this.form) {
  
validity true// assume valid
  
var str_value document.getElementById("spamfeld").value;
    if (
check_empty(document.form.Leer.value))
  { 
        
validity true
        
alert('Spamfeld ist voll!'); 
        
    }      if (!
check_email(document.form.BOO_eMail.value))
        { 
validity falsealert('eMail ist ungültig!'); }
      return 
validity;
}


function 
check_email(address) {
  if ((
address == "")
    || (
address.indexOf ('@') == -1)
    || (
address.indexOf ('.') == -1))
      return 
false;
  return 
true;
}
// -->
</script>
?>


geschrieben von Klaush am 29.02.2008 - 08:18
Es sollte dir gelingen die Fehler zu analysieren und oder erst einmal diese zu erkennen.

Der Funktionsaufruf function validate_form(this.form) ist falsch.

Das brauchst du nicht var str_value = document.getElementById("spamfeld").value;.

Die Funktion check_empty() ist nicht vorhanden.

weiteres habe ich mir erspart.

Hier dein erster Versuch der auch funktionieren sollte, ungetestet.
PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 

<?
<SCRIPT LANGUAGE="JavaScript">
<!--
function 
validate_form() {
  
validity true// assume valid
  
if (check_empty(document.form.Leer.value))
  { 
        
validity true
        
alert('Spamfeld ist voll!'); 
    }
  
    if (!
check_email(document.form.BOO_eMail.value))
  { 
        
validity false
        
alert('eMail ist ungültig!'); 
    }
  if (
validity)
    
alert ("Alle benötigten Informationen wurden geprüft. "
         
"Die eingaben wurden als richtig erkannt ");
  return 
validity;
}

function 
check_empty(text
{
  return (
text.length 0); // gibt false zurück wenn leer
}

function 
check_email(address
{
  if ((
address == "") || (address.indexOf ('@') == -1) || (address.indexOf ('.') == -1))
    return 
false;
  return 
true;
}
// -->
</script>
<table border="0" width="100%">
  <tr>
    <td width="80%" valign="top"><h1>Gästebuch</h1><% =sPageText %></td>
    <td width="20%" valign="middle">
      <div align="right"><img border="0" src="../images/buch.jpg" width="153" height="120"></div></td>
  </tr>
</table>
<br>
<form name="form" method="POST" action="GuestBookEdit.asp?modus=save&idbook=<% =Request.QueryString("IdBook")%>" onSubmit="return validate_form(this.form)">
  <table border="0" width="100%">
    <tr>
      <td valign="top" class="color"><b>Vor- und Nachname</b></td>
      <td class="color"><input type="text" name="BOO_Name" size="47" value="<% =sName %>">*</td>
    </tr>
    <tr>
      <td valign="top" class="color"><b>Ort</b></td>
      <td class="color"><input type="text" name="BOO_Ort" size="47" value="<% =sOrt %>">*</td>
    </tr>
    <tr>
      <td valign="top" class="color"><b>eMail</b></td>
      <td class="color"><input type="text" name="BOO_eMail" size="47" value="<% =seMail %>">*</td>
    </tr>
    <tr>
      <td valign="top" class="color"><b>mein Kommentar</b></td>
      <td class="color"><textarea rows="9" name="BOO_Kommentar" cols="40"><% =sMemo %></textarea>*</td>
    </tr>
    <tr><td><p class="color">Dieses Feld bitte nicht ausfuellen!</p></td>
    <td class="color"><input type="text" name="Leer" size="47" value="">*</td>
    </tr>
    <tr>
      <td valign="top" class="color" colspan="2"><input type="submit" value="speichern" name="save"></td>
    </tr>
  </table>
  &nbsp;
</form>
?>



Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.