Funktion automatisch auf allen Felder ausführen

smyle

Erfahrenes Mitglied
Hallo, kann mir jemand sagen wie ich ein JS Funktion über alle textfelder laufen kann ohne das ich den Name des Textfeldes kenne?

Natürlich muss dies vor dem absenden des Formulares geschehen und wichtig ist;
Gibt ein Textfeld "false" zurück, so bleibt man auf der selben Seite und das Formular wurde nciht gesendet.Gibt es "true" zurück so wird das Formular gesendet.

Denn ich habe folgenden Javscript Code jedoch werden meine Textfelder mit PHP automatisch generiert und somit bekommen sie irgend einen generierten Namen.

HTML:
<script language="javascript">
function feldleer(feld)
 {
  if(document.getElementById(feld).value != "" && document.getElementById("G"feld).value == "") 
 	{
	 alert("Bitte alle Felder ausfüllen");
	 return false;
	}
	
  else if(document.getElementById(feld).value == "" && document.getElementById(feld).value != "")
    {
	  alert("Bitte alle Felder ausfüllen");
	  return false;
	}
  else
    {
	 alert("OK");
	 return true;
	}
 }
function ists_zahl(wort) 
   { 
	  ist_zahl=true;

		   if(wort.length>=1 && wort.length<=4) 
		   	{  
			 for(n=0;n<wort.length;n++)
				{
					if(wort.charAt(n)>"6")
					 {
					 alert("Nur Zahlen von 1-6 sind möglich");
					 //ist_zahl=false;
					 return false;
					 }
				}
			}	
			else
			 {
			 alert("min 1 Zeichen oder max. 4 Zeichen müssen vorhanden sein");
			 //ist_zahl=false;
			 return false;		  
			 }
			 
		   if("G"wort.length>=1 && "G"wort.length<=4) 
		   	{  
			 for(n=0;n<"G"wort.length;n++)
				{
					if("G"wort.charAt(n)>"6")
					 {
					 alert("Nur Zahlen von 1-6 sind möglich");
					 //ist_zahl=false;
					 return false;
					 }
				}
			}	
			else
			 {
			 alert("min 1 Zeichen oder max. 4 Zeichen müssen vorhanden sein");
			 //ist_zahl=false;
			 return false;		  
			 }			  
		
   }
		
 function ueberpruefen(formular,feld)
 {
	if (feldleer(formular.feld) == true && feldleer(formular."G"feld) == true)
	    {
		 	wert1 = ists_zahl(formular.feld.value);
			wert2 = ists_zahl(formular."G"feld.value);
			
			if(wert1 == false || wert2 == false)
			 {
			  return false;
			 }
		}	
	else
	   {
	    alert ("Bitte alle Felder ausfüllen");
		return false;
	   }
	   	
 	return true;
 } 
</script>
 
Zuletzt bearbeitet:
Also wenn du sowieso mit PHP arbeitest, warum machst du dann die Prüfung nicht auch damit Wenn ich Java abgeschaltet hätte würde dein Formular gar nicht funktionieren oder zumindest wird es dann nicht geprüft.
 
Hi,

mit Hilfe der elements-Kollektion kannst du auf alle Formularfelder zugreifen. Feststellen, ob es sich um ein Textfeld handelt, kannst du, indem du prüfst, ob die type-Eigenschaft den Wert text enthält.

Beispiel:
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
  <!--
function checkIt(objForm){
  var arrElem = objForm.elements;
  for(var i=0; i<arrElem.length; i++){
    if((arrElem[i].type == "text") && (arrElem[i].value == ""))
      return false;
  }
  return true;
}
 //-->
</script>
</head>
<body>
<form action="auswertung.php" onsubmit="return checkIt(this);">
  <input type="text" name="txt_1" value="1">
  <input type="text" name="txt_2" value="2">
  <input type="text" name="txt_3" value="3">
  <input type="text" name="txt_4" value="">
  <input type="submit" value="senden">
</form>
</body>
</html>

Ciao
Quaese
 
Also wenn du sowieso mit PHP arbeitest, warum machst du dann die Prüfung nicht auch damit
PHP ist Serverseitig, das heisst wenn ich etwas mit PHP überprüfen würde und ich dann auf den submit button klicke, würde "form action="*"" aktiviert werden und somit wären alle meine Eingaben verlohren.

Quaese, wie muss ich in diesem Fall meinen Code umändern, denn ich habe einen vergleich in der Fuktion felderleer(feld) :S?
Geht das überhaupt?

Code:
function feldleer(feld)
 {
  if(document.getElementById(feld).value != "" && document.getElementById("G"feld).value == "") 
 	{
	 alert("Bitte alle Felder ausfüllen");
	 return false;
	}
	
  else if(document.getElementById(feld).value == "" && document.getElementById(feld).value != "")
    {
	  alert("Bitte alle Felder ausfüllen");
	  return false;
	}
  else
    {
	 alert("OK");
	 return true;
	}
 }
function ists_zahl(wort) 
   { 
	  ist_zahl=true;

		   if(wort.length>=1 && wort.length<=4) 
		   	{  
			 for(n=0;n<wort.length;n++)
				{
					if(wort.charAt(n)>"6")
					 {
					 alert("Nur Zahlen von 1-6 sind möglich");
					 //ist_zahl=false;
					 return false;
					 }
				}
			}	
			else
			 {
			 alert("min 1 Zeichen oder max. 4 Zeichen müssen vorhanden sein");
			 //ist_zahl=false;
			 return false;		  
			 }
			 
		   if("G"wort.length>=1 && "G"wort.length<=4) 
		   	{  
			 for(n=0;n<"G"wort.length;n++)
				{
					if("G"wort.charAt(n)>"6")
					 {
					 alert("Nur Zahlen von 1-6 sind möglich");
					 //ist_zahl=false;
					 return false;
					 }
				}
			}	
			else
			 {
			 alert("min 1 Zeichen oder max. 4 Zeichen müssen vorhanden sein");
			 //ist_zahl=false;
			 return false;		  
			 }			  
		
   }
		
 function ueberpruefen(formular,feld)
 {
	if (feldleer(formular.feld) == true && feldleer(formular."G"feld) == true)
	    {
		 	wert1 = ists_zahl(formular.feld.value);
			wert2 = ists_zahl(formular."G"feld.value);
			
			if(wert1 == false || wert2 == false)
			 {
			  return false;
			 }
		}	
	else
	   {
	    alert ("Bitte alle Felder ausfüllen");
		return false;
	   }
	   	
 	return true;
 }
 
PHP ist Serverseitig, das heisst wenn ich etwas mit PHP überprüfen würde und ich dann auf den submit button klicke, würde "form action="*"" aktiviert werden und somit wären alle meine Eingaben verlohren.

Warum sollen die Eingaben verloren sein? Jeder der ein Formular hat und dieses dann logischerweise auch abschickt verarbeitet die Eingaben doch dann auch weiter. Es kommt nur darauf an wie du mit den GET/POST-Variablen umgehst.

Ach so: wie schon geschrieben Java kann ich abschalten die Prüfung via PHP nicht
 
Ja schon, aber der Benutzer kann dann seine Eingaben, vor dem abspeichern in der DB nicht mehr ändern. oder doch?
wie würdest denn du das machen? Ich verstehe nicht was du genau meinst. :(

Nicht zu vergessen, ich habe im form eine action="*" beim wählen des subits wird man auf einem anderen link weitergeleitet und die Eingaben werden in der DB übernommen.

Java und Javascript haben soviel gemeinsam, wie Eishockey und Feldhockey ;-)
Stimmt :D hihi
 
@Maik: Schon klar aber Java ist einfacher zu schreiben als Javascript ;)

Wenn du mit GET arbeitest, kannst du auch wenn du auf eine andere Seite umleitest schreiben:

PHP:
$fehler = 0;

IF(!isset($_GET["feld1"]) OR trim($_GET["feld1"]) == "") {
  $fehler = 1;
}

IF(!isset($_GET["feld2"]) OR trim($_GET["feld2"]) == "") {
  $fehler = 1;
}

IF ($fehler == 1) {
  echo "Es sind nicht alle Felder ausgefüllt";
  echo "<a href='formular.php?feld1=" .@$_GET["feld1"] ."&feld2=" .@$_GET["feld2"]>Fehler beheben</a>";
}

Auf der "Formularseite" gibst du bei den entsprechenden Feldern an:

PHP:
<input type="text" name="feld1" value="<?php echo @$_GET['feld1']; ?>">
<input type="text" name="feld2" value="<?php echo @$_GET['feld2']; ?>">

Dann werden die vorhandenen Werte gleich wieder eingetragen.

Du kannst die Prüfung aber auch gleich auf der "Formularseite" machen. Einfach wie oben bei den Feldern die Variable $fehler auf 1 setzten wenn was nicht stimmt und wieder durch IF den entsprechenden Codeblock ausführen.

NACHTRAG: Das hier könnten dir auch helfen.

http://www.tutorials.de/forum/php-tutorials/207714-formular-uberpruefung-mit-fehlerausgabe.html

http://www.tutorials.de/forum/php-t...mmten-anker-innerhalb-der-seite-springen.html
 
Zuletzt bearbeitet:
Hi,

du könntest die Funktion checkIt in ... aufrufen.
Code:
 function ueberpruefen(formular,feld)
 {
	if (checkIt(formular))
	    {
		 	wert1 = ists_zahl(formular.feld.value);
			wert2 = ists_zahl(formular."G"feld.value);
			
			if(wert1 == false || wert2 == false)
			 {
			  return false;
			 }
		}	
	else
	   {
	    alert ("Bitte alle Felder ausfüllen");
		return false;
	   }
	   	
 	return true;
 }

Damit überprüfst du, ob alle Textfelder Inhalte besitzen.

Im Übrigen zweifel ich daran, dass
Code:
formular."G"feld
korrekt ist.

Ciao
Quaese
 
hmm .. das wird warscheinlich nicht gehen, wegen den textfeldernamen. und ausserdüm müssen nicht alle felder ausgefüllt sein :S

Das mit dem PHP würd ev funktionierten aber da ich sehr viele Daten habe die man eintragen kann oder aus der DB ausgelesen wurden, wäre es besser wenn ich diese Variante vermeide..

Ach mann... das wir sehr schwer werden.

Kann ich den die JS funktionen auch direkt in den einzelnen feldern aufrufen?
und somit sagen, das beim klick von submit button dies überprüfen soll?
 

Neue Beiträge

Zurück