1

angular jsログインフォームでキーボードの「入力ボタン」を使用すると問題が発生します。この質問が以前に尋ねられたことは知っていますが、スタックオーバーフローの質問に書かれているほとんどすべてを試したので、私の問題は少し異なると思います。

したがって、キーボードのEnterキーのみを使用して、Enterキーを押してフォームを送信できるようにしたいだけです。

ログインHTMLは次のとおりです。

<!-- BEGIN LOGIN FORM -->
<form ng-submit="loginCtrl.login()" class="login-form">
    <h3 class="form-title">Sign In</h3>
    <div class="alert alert-danger display-hide">
        <button class="close" data-close="alert"></button>
            <span>
            Enter any username and password. </span>
    </div>
    <div class="form-group">
        <!--ie8, ie9 does not support html5 placeholder, so we just show field title for that-->
        <label class="control-label visible-ie8 visible-ie9">Username</label>
        <input class="form-control form-control-solid placeholder-no-fix" type="text" autocomplete="off" placeholder="Company/username"
               ng-model="loginCtrl.username" name="username"/>
    </div>
    <div class="form-group">
        <label class="control-label visible-ie8 visible-ie9">Password</label>
        <input class="form-control form-control-solid placeholder-no-fix" type="password" autocomplete="off" placeholder="Password"
               ng-model="loginCtrl.password" name="password"/>
    </div>
    <div class="form-actions">
        <input type="submit" class="btn btn-success uppercase" value="Login">
    </div>

   </form>
<!-- END LOGIN FORM -->

ここに私のログインがあります:

self.login = function() {

        var result = self.username.split("/");
        var account = result[0];
        var userId = result[1];

            UserService.login(userId, self.password,account).then(function(user) {
            self.userAccount = user;

            $state.go('home');

        }, function(err) {
           alert("Authentication failure: Please check your credentials. ")
        });

ユーザー名を「companyName/Username」として取得するので、次のようになります: amazon/bigboby

4

1 に答える 1

1

あなたの問題はこの<button>タグが原因であると確信しています:

<button class="close" data-close="alert"></button>

答えはドキュメントにあります:

次の 2 つの方法のいずれかを使用して、フォームが送信されたときに呼び出される JavaScript メソッドを指定できます。

ngSubmitフォーム要素のディレクティブ

ngClickタイプ送信の最初のボタンまたは入力フィールドのディレクティブ (input[type=submit])

最初のボタンで ng-click ハンドラーを検索する方法に関するコメントに注意してください。フォームの送信を押すENTERと、Angular はフォームを見てそのボタンを確認します。そのボタンでハンドラーを実行ng-clickします(ある場合)。

ボタンに属性を含めるtypeと、それを防ぎ、実際の送信ボタンを見つけることができます。

<button type="button" class="close" data-close="alert"></button>
于 2015-10-06T20:34:50.303 に答える