web-dev-qa-db-ja.com

送信時のデフォルトを防ぐ:-Angularjs

防止したい-フォームへの入力時に電子メールがnullの場合、http-post to '/ signUp'のデフォルトアクション。

コントローラーコード:-

$scope.signUp = function() {

  if($scope.email = null);
    preventdefault;

}

html(翡翠):-

form(name="input", action="/signUp", method="post")
  input(type="submit", value="submit")
10
Sangram Singh

フォームにaction属性を指定している場合、angularjsはpreventDefaultを実行しません。それを削除して代わりにng-submitを追加した場合:

<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>

この場合、フォームには常にpreventDefaultがあり、送信時に$ scope.signUp()関数が呼び出され、バックエンド/ signupへのajax投稿またはさらなる検証に進むことができます。入力に適切な検証属性(type = "email"やrequiredなど)を使用することで、angularjsはいくつかの基本的な検証を実行することに注意してください。送信ボタンに追加のng-disabled="!myForm.$valid"を追加して、電子メールが正しく入力されていない間、ボタンを無効のままにしておくことができます。

私の例のように入力でng-modelを使用すると、スコープは$scope.newSignupオブジェクトを取得します。これは、さらに検証するためにsignUp()関数でチェックインできます。

$scope.signUp = function(htmlForm) {
    if ($scope.newSignup.email !== '[email protected]') {
       return false;  // you should really show some info to the user
    }
    ...
}
18
Dan Caragea