Formular überprüfen vor dem Absenden ?

Der Zugriff auf das Input-Objekt ist immer noch falsch.

Versuche es mal so:
Javascript:
document.abc['name[0]'];
So greifst du auf die Eigenschaft name[0] des Objekts abc zu.
Mit .form.name[0] greifst du aber fälschlicherweise auf das erste Zeichen des name-Attributs des Form-Tags zu.
Kleines Beispiel
 
Ok, danke! Das funktioniert soweit.

Jetzt springt er aber nicht mehr zu den Aktionen. :(
Insert wird nicht mehr ausgelöst bzw. angezeigt.

Hier der korrgierte Code:

HTML:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<script type="text/javascript">

function check() {

	var strErrors='';
	
	if (document.form['name[0]'].value=="")
	strErrors += "Feld 1 ist leer\n";
	
	var input=document.form['name[0]'].value;
	var possible_character="ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜabcdefghijklmnopqrstuvwxyzäöü";
	for (var i=0;i<input.length;i++) {
		if (possible_character.indexOf(input.charAt(i))<0) {
			alert('Feld 1\nZahlen sind nicht möglich!');
			return false;
		}
	}
	
	if (document.form['phone[0]'].value=="")
		strErrors += "Feld 2 ist leer\n";
	
	if (strErrors.length>0) {
		alert("Festgestellte Probleme: \n\n"+strErrors);
    return(false);
  }

}

function send(action,id) {

	if(action==0) {
		if (confirm("Neuen Namen eintragen?"))
			document.form.action.value = "insert";
		else
			return;
	}
	
	else if(action==1)
		document.form.action.value = "update";

	else if(action==2) {
		if (confirm("Name mit id " + id + " löschen?"))
			document.form.action.value = "delete";
		else
			return;
		}
	
	if ( check() ) {
      document.form.id.value = id;
	  document.form.submit();
	}

	
}

</script>

</head>
<body>

<?php
/* Aktionen */
if(isset($_POST["action"])) {

/* Neuer Eintrag */
	if($_POST["action"]=="insert") {
		echo "insert ******";
	}

/* Eintrag ändern */
	else if($_POST["action"]=="update") {
		echo 'update ******';
	}
	
/* Eintrag löschen */
	else if($_POST["action"]=="delete")	{
		echo 'delete ******';
	}

}
?>

<!-- Formular -->

<form name="form" action="test.php" method="post">
<input name="action" type="hidden" />
<input name="id" type="hidden" />

<table border="1">
	<tr>
		<td>id</td>
		<td>Name</td>
		<td>Telefonnummer</td>
		<td>Aktiv</td>
		<td><em>Aktion</em></td>
	</tr>
	<tr> <!-- Neuer Eintrag -->
		<td></td>
		<td><input name="name[0]" size="50" /></td>
		<td><input name="phone[0]" size="50" /></td>
		<td>ja <input type="radio" name="" value="" disabled="disabled" /> nein <input type="radio" name="" value="" disabled="disabled" checked="checked" /></td>
		<td><a href="javascript:send(0,0);">eintragen</a></td>
	</tr>
</table>

</form>

</body>
</html>

Bitte einfach mal testen.
 
Kann mir niemand weiter helfen? :(

Ich habe die Funktion hin und her verschoben und probiert, aber mit der Funktion gibt es einfach kein "insert".
 
Ich habe gerade noch einen Fehler gefunden: Du gibst in der Funktion check() niemals true zurück, sodass in send() der IF-Block nie ausgeführt wird.

Du musst einfach noch ein return true am Ende der check()-Funktion anhängen!

Übrigens musst du in deiner check()-Funktion nicht alle erlaubten Zeichen durchgehen, du kannst einfach auf den Charcode prüfen:
Javascript:
var cc = 0; // curent char code
for (var i=0;i<input.length;i++)
{
  cc = input.charCodeAt(i);
  if ( (cc>=97 && cc<=122) ||
       (cc>=65 && cc<=90) )
  {
  }
  
  else
  {
    alert('Feld 1\nZahlen sind nicht möglich!');
		return false;
  }
}
 
Zurück