2017-08-14 14 views
2

私はAngularJSログインフォームを使用しています。私は、ユーザーがEnterキーを本当にすばやく押すと、パスワードが部分的に送信されている時間の1/10に気付きました。たとえば、パスワードが「happygolucky」の場合、代わりに「happy」が送信されます。AngularJSログインフォームは部分パスワードを提出します

私は、他の場所に掲載された同様の問題を見つけることができないと思われ、なぜそれが最初に発生するのかについて迷っています。

これは、私が使用しています形式です:

<form name="loginForm" novalidate ng-submit="loginFormDirectiveCtrl.login()"> 
    <div class="form-group" ng-class="{ 'has-error': loginForm.email.$dirty && loginForm.email.$error.required }"> 
     <label for="email">Company Email</label> 
     <input type="text" name="email" id="email" class="form-control" ng-model="loginFormDirectiveCtrl.email" 
       required/> 
     <span ng-show="loginForm.username.$dirty && loginForm.email.$error.required" 
       class="help-block">Company email is required</span> 
    </div> 
    <div class="form-group" 
     ng-class="{ 'has-error': loginForm.password.$dirty && loginForm.password.$error.required }"> 
     <label for="password">Password</label> 
     <input type="password" name="password" id="password" class="form-control" 
       ng-model="loginFormDirectiveCtrl.password" required/> 
     <span ng-show="loginForm.password.$dirty && loginForm.password.$error.required" 
       class="help-block">Password is required</span> 
    </div> 
    <button class="login-button" type="submit" 
      ng-disabled="loginForm.$invalid || loginFormDirectiveCtrl.loading"> 
     <span ng-hide="loginFormDirectiveCtrl.loading">LOGIN</span> 
    </button> 
</form> 
+0

私は同じ経験をしていますが、コードバーを使用するときには、すべての読書者にエンターキーを送るピストルを使用します。しかし、ユーザーが普通に入力してすぐに入力するときはそうではありません。 –

+0

@JesusCarrascoあなたは何を意味するかを詳しく説明できますか?あなたのケースでは、パスワードにはコードバーピストルがあるときに改行文字が含まれていますか?あなたが説明を気にしないなら、コードバーピストルは何ですか?ありがとう! – user123

+0

私は、記事がピストルでスキャンされるとき、私はテックスボックススキューと同様の状況を持っていることを意味します。それはまた、提出を発射し、時にはSKUが非常に大きく、ng-modelが完了するサブミットをトリガします。それは私が意味するものです。 –

答えて

1

を私はディレクティブを作成していたコメントで語っ例えば何。このような。

.directive('inputDelayEnter', ['$timeout', 
    function($timeout) { 
    return {   
     require:'^?ngModel', 
     link: function (scope, element, attrs, ngModelCtrl) { 
      element.bind('keydown keypress', function (event) { 
       if(event.which === 13) {      
        $timeout(500); 
        if(ngModelCtrl.$modelValue !== undefined){ 
         scope.$apply(function(){ 
          scope.$eval(attrs.coppelDelayEnter); 
         }); 
        } 

       } 
      }); 
     } 
    }; 
    } 
])​; 

HTML

<input type="text" ng-model="data.sku" input-delay-enter> 

は、私はあなたがパスワードのみにタイプを変更した場合、それは助けることができると思います。

+0

ありがとうございます。私は今それを理解する。私はそれを試してみましょう。 – user123

関連する問題