Eingabefelder mit Javascript überprüfen (PHP Script)

atlantyz

Erfahrenes Mitglied
Hallo Leute,

ich habe ein PHP Script, bei dem man ein Formular ausfüllen muss. Dabei werden manche Felder aus einer Datenbank mit PHP gefüllt und einige Felde müssen selbst ausgefüllt werden. Nun habe ich auch ein Feld, dass nur Zahlen enthalten darf oder eben leer sein darf. Wenn ich dort einen Buchstaben reinschreibe, dann möchte ich gerne vor dem abschicken des Formulars eine Fehlermeldung erhalten.

Ich habe schon mit Javascript eine Funktion gebastelt, um ein leeres Feld abzufangen und den Benutzer zu zwingen dort eine Eingabe zu machen. In dem gleichen Formular möchte ich nun auch diese Abfrage nach den Zahlen implementieren. ich habe in Google die Javascript Funktion "isNaN" gefunden, die genau das zu können scheint.

Nun kenne ich mich aber leider mit Javascript nur sehr mäßig aus, so dass ich die Funktion leider nicht in mein Script eingebunden bekomme. Ständig bekomme ich die Meldung "Bitte Zahl eingeben" und zwar egal, ob ich eine Zahl einschreibe, einen Buchstaben oder das Feld leer lasse.

Mein bisheriges Script sieht so aus:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<LINK href='./css/inc.layout.css' rel='stylesheet' type='text/css'>
<title>Anlegen eines neuen Tickets</title>
<script language='javascript'>
function feldleer(feld)
{
   if (feld.value != '') {
      return true;
   }
 	else {
 	   return false;
 	}
}
 
function ueberpruefen(ticket_anlegen)
{
   if (feldleer(ticket_anlegen.kurzbeschreibung) == false) {
      alert ('Bitte eine Kurzbeschreibung eingeben!');
      ticket_anlegen.kurzbeschreibung.focus();
      return false;
 	}
 	return true;
}
	

</script></head>
<body onload='self.focus();document.ticket_anlegen.kundetelefon.focus()' style='background-color:#F0F0F0'>
<h2><center>Neues Ticket anlegen</center></h2><br><br>
<form onSubmit='return ueberpruefen(document.ticket_anlegen)' name = 'ticket_anlegen' action = 'exe/ticket_anlegen.php' method = 'post'>
<table class='table_ansehen'>
<tr><td><b>Telefonnummer: </b></td>
<td><input name = 'kundetelefon'></td></tr>
<tr><td><b>Standort: </b></td>
<td><input name = 'kundestandort'></td></tr>
<tr><td><b>Betroffenes Ger&auml;t: </b></td>
<td><input name = 'geraet_betroffen'></td></tr>
<tr><td><b>Kundenname: </b></td>
<td><input name = 'kundename'></td></tr>
<tr><td><b>Kurzbeschreibung: </b></td>
<td><input name = 'kurzbeschreibung' size = '40'></td></tr>
<tr><td><b>Fehlertyp: </b></td>
<td><select name = 'fehlerauswahl'>

Zunächst habe ich das probiert:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<LINK href='./css/inc.layout.css' rel='stylesheet' type='text/css'>
<title>Anlegen eines neuen Tickets</title>
<script language='javascript'>
function feldleer(feld)
{
   if (feld.value != '') {
      return true;
   }
 	else {
 	   return false;
 	}
}
 
function ueberpruefen(ticket_anlegen)
{
   if (feldleer(ticket_anlegen.kurzbeschreibung) == false) {
      alert ('Bitte eine Kurzbeschreibung eingeben!');
      ticket_anlegen.kurzbeschreibung.focus();
      return false;
 	}
	   if (isNaN(ticket_anlegen.geraet_betroffen)) {
	     alert("Bitte Ger$auml;te Nummer eingeben!");
	     ticket_anlegen.geraet_betroffen.focus();
	   }

	 	
 	return true;
}
	

</script></head>
<body onload='self.focus();document.ticket_anlegen.kundetelefon.focus()' style='background-color:#F0F0F0'>
<h2><center>Neues Ticket anlegen</center></h2><br><br>
<form onSubmit='return ueberpruefen(document.ticket_anlegen)' name = 'ticket_anlegen' action = 'exe/ticket_anlegen.php' method = 'post'>
<table class='table_ansehen'>
<tr><td><b>Telefonnummer: </b></td>
<td><input name = 'kundetelefon'></td></tr>
<tr><td><b>Standort: </b></td>
<td><input name = 'kundestandort'></td></tr>
<tr><td><b>Betroffenes Ger&auml;t: </b></td>
<td><input name = 'geraet_betroffen'></td></tr>
<tr><td><b>Kundenname: </b></td>
<td><input name = 'kundename'></td></tr>
<tr><td><b>Kurzbeschreibung: </b></td>
<td><input name = 'kurzbeschreibung' size = '40'></td></tr>
<tr><td><b>Fehlertyp: </b></td>
<td><select name = 'fehlerauswahl'>
(Ich hab jetzt mal den ganzen PHP- Teil nicht mit kopiert, da es ja scheinbar etwas mit den Javascript Funktionen zu tun hat.)
Das hat aber nicht funktioniert. Ich glaube irgendwie stimmt was mit der Einbindung nicht. Das Feld "geraet_betroffen" soll überprüft werden.

Kann mit jemand helfen?
 
Hey,

ich würd Dir der Einfachkeit halber Regex empfehlen, dies wird heutzutage auch von allen gängigen Webrowsern unterstützt. Den Regex-Ausdruck den Du hierfür benötigen würdest wäre folgender:

^\d+$

Dies würde dann ungefährt so aussehen:

Code:
<SCRIPT LANGUAGE="JavaScript"><!--
function ueberpruefen(ticket_anlegen) {
  var re = new RegExp("^\d+$");
  if (ticket_anlegen.geraet_betroffen.value.match(re)) {
    return true;
  } else {
    alert("Bitte eine Zahl eingegeben.");
  }
}
// -->
</SCRIPT>

Gruss
Resu
 
Hallo,

RegEx sind aber bei der Aufgabenstellung wie die berühmten Kanonen auf Spatzen...
Die isNaN() sollte vollkommen ausreichen.

Versuche mal folgendes:
Javascript:
function ueberpruefen(formular) {
  var geraet = formular.geraet_betroffen.value;
  
  if(isNaN(geraet) || geraet == "") {
    alert("Kein Ger&auml;t angegeben!");
  }
}

Ich vermute, dass das Problem dadurch kommt, dass du nicht den Wert des Eingabefeldes überprüft hast sondern das Feld an sich. Und ein Eingabefeld ist nunmal keine Zahl ;)

Gruß
BK
 
Hallo,

RegEx sind aber bei der Aufgabenstellung wie die berühmten Kanonen auf Spatzen...
Die isNaN() sollte vollkommen ausreichen.

Da hast Du schon recht ;-)

Ich vermute, dass das Problem dadurch kommt, dass du nicht den Wert des Eingabefeldes überprüft hast sondern das Feld an sich. Und ein Eingabefeld ist nunmal keine Zahl ;)

Stimmt das sollte helfen. Habe ich einfach überlesen und in meinem Script automatisch angefügt.
 
Danke. Das stimmt. Ich hab wirklich das feld überprüft und nicht den Wert. Konnte es folgendermaßen lösen:

HTML:
function ueberpruefen(ticket_anlegen)
{
   if (feldleer(ticket_anlegen.kurzbeschreibung) == false) {
      alert ('Bitte eine Kurzbeschreibung eingeben!');
      ticket_anlegen.kurzbeschreibung.focus();
      return false;
 	}
	if(isNaN(ticket_anlegen.geraet_betroffen.value)) {
		alert("Kein Ger&aauml;t angegeben!");
		ticket_anlegen.geraet_betroffen.focus();
		return false;
	}
 	return true;
}

Manchmal sieht man vor lauter Bäumen den Wald nicht mehr. Ich danke euch vielmals!
 

Neue Beiträge

Zurück