Hallo,
$('#myForm').submit(function(){
äußere Funktion 1, wird einmal beim Absenden des Formulars aufgerufen
$('#myForm input[type=text]').each(function(n,element){
innere Funktion 2, wird für jedes Feld aufgerufen (Iteratorfunktion)
if ($(element).val()=='') { alert('Field '+element.id+' must have a value'); return false;
Mit diesem return beendest du die innere Funktion 2.
Das ist in Ordnung, damit stoppt die each-Schleife und weitere Elemente werden nicht geprüft.
Du willst aber zusätzlich, dass die äußere Funktion 1, false zurückgibt. Das tut sie nicht automatisch, wenn du aus Funktion 2 zurückspringst. return bedeutet ja nur: Beende die aktuelle Funktion und springe zurück zur Codestelle, wo die Funktion aufgerufen wurde.
Das kannst du z.B. erreichen, indem du eine Variable in Funktion 1 notierst und diese in Funktion 2 änderst, wenn ein Fehler gefunden wurde.
var korrekt = true;
Dann in Funktion 2 korrekt = false
setzen, wenn ein Fehler gefunden wurde.
Am Ende von Funktion 1 dann return korrekt;
. Dann wird false zurückgegeben, wenn ein Fehler gefunden wurde.
Mathias