Hallo Daniel,
Erstmal die formalen Sachen
- Wenn Du xhtml oder auch einfach nur gutes HTML anstrebst, sollten dein options die Form <option value="1234">a</option> haben, also klein geschrieben und geschlossen. Es waere auch nett, die options wegen der Uebersicht etwas einzuruecken. Das bezieht sich im Prinzip auf alle Elemente.
- JavaScript mag auch eingerückt werden
- Deine Benamungen sollten aussagekräftiger sein.
Die Formalien haben den Sinn, dass das Script uebersichtlicher wird und vor allem , dass sich Dritte, so wie ich, oder aber du selbst Du in 6 Wochen, darin zurechtzufinden.
Zum Javascript
- Du musst, wenn Du PHP schreibst, error_reporting auf 2047 (E_ALL) haben. Bei Javascript musst Du ebenfalls einen Debugger haben. Eine gute Kombination ist die Javascript-Konsole von Mozilla oder Firebird zusammen mit der Web Developer Extension von Chris Pederick. Haettest Du einen Debugger, waere dir aufgefallen, dass Javascript das Array JS_Array nicht kennt. Der Grund ist, dass JavaScript zwischen Groß- und Kleinschreibung unterscheidet , es muss also new Array() heissen, nicht new array().
- Dein ursprüngliches Anliegen war, wenn ich Dich richtig verstanden habe:
- wenn die Option keiner Ueberpruefung bedarf, soll die Form einfach abgeschickt werden
- wenn eine Ueberpruefung notwendig ist, soll die Form nur bei Zustimmung abgeschickt werden - Demnach muss die Funktion onsubmit (der Form) ausgefuehrt werden, nicht onclick (des Buttons). Siehe Kommentare in der Funktion fuer weiteres
Im Ergebnis sieht das so aus:
<form name="addVeraForm" action="foo.php" onsubmit="return Ueberpruefen(this.oidv.options[this.oidv.options.selectedIndex].value)">
<select name="oidv">
<option value="1029">a</option>
<option value="1468">d</option>
</select>
<script type="text/javascript">
JS_Array = new Array();
JS_Array[1029] = 0;
JS_Array[1468] = 1;
function Ueberpruefen(v_oid)
{
if(JS_Array[v_oid] == 1) //confirm() ausgeben oder nicht
{
ok = confirm("Dieser Veranstaltungsort besitzt bereits ein Objekt. Überschreiben?");
if(ok) // ok geklickt oder cancel?
{
return true;// wenn ok, dann abschicken
}
else return false; // wenn cancel, nicht abschicken
}
else return true;// Kein confirm(), also abschicken
}
</script>
...
<input type="submit" name="addVera">
Gruß,
Dieter