Wenn Sie das action-Attribut für das Formular angegeben haben, AngularJS nicht prevent tun. Wenn Sie es entfernen und hinzufügen ng einreichen statt:
<form name="myForm" method="post" ng-submit="signUp(myForm)" novalidate>
<input type="email" name="email" ng-model="newSignup.email" required>
<button type="submit">sign up</button>
</form>
das Formular In diesem Fall wird immer prevent und auf $ scope.signUp() Funktion aufgerufen wird, einreichen, wo Sie mit einer Ajax-Post gehen können zum Backend/Signup oder zur weiteren Validierung. Beachten Sie, dass anglejs bei der Verwendung geeigneter Validierungsattribute für Ihre Eingaben (wie type = "email" und erforderlich) eine grundlegende Validierung für Sie durchführt. Sie können eine zusätzliche ng-disabled="!myForm.$valid"
auf der Schaltfläche senden, um die Schaltfläche deaktiviert zu halten, während die E-Mail nicht korrekt eingegeben wird.
Durch die Verwendung von ng-Modell an den Eingängen wie in meinem Beispiel Ihr Umfang erhält ein $scope.newSignup
Objekt, das Sie in Ihrer Registrierung() Funktion für eine weitere Validierung überprüfen:
$scope.signUp = function(htmlForm) {
if ($scope.newSignup.email !== '[email protected]') {
return false; // you should really show some info to the user
}
...
}
hinzufügen 'ng-disabled = "! email" 'zur Eingabe. Oder noch besser: Implementieren Sie die Formularvalidierung ordnungsgemäß. –