das seltsame verhalten, dass nicht alle Formularwerte im Script ankommen
Also ... entweder Du baust ein Skript a la
<?php
header('Content-type: text/plain; charset="utf-8"');
print_r( $_GET );
(auch $_POST, $_SERVER, $_COOKIES, $_FILES, $_ENV kannst Du so ausgeben) oder schlicht eines mit:
<?php phpinfo();
oder dieses und zeigst mit dem Action-Attribut des Formulars darauf oder Du schaust in die Entwicklerwerkzeuge.
Tipp: Meistens sind es kleine Typos in den Namen... oder vergessene Namen oder halt doppelte Namen für Inputs.
Noch ein Tipp: Falls Du Daten mit GET überträgst und zugleich URL-Rewriting benutzt, dann kann es sein, das ein Item der Formulardaten einen Schlüssel (Namen) hat, der bei Rewrite ebenfalls belegt wird. Dann könnte etwas herauskommen wie:
/foo/bar.php?ort=hier&ort=oder+da
Dein Ansatz, die Daten mit JS zu überprüfen (sieh auch hier auf die Keys), hat eigentlich nur dann einen Sinn, wenn die Formulare auch dynamisch zusammengebaut werden.