3

フロントエンドとバックエンド (Express.js を使用) の入力検証を使用して、AngularJS で構築されたサインアップ フォームがあります。ユーザーがqwidjq&/%のような無効な電子メール アドレスを入力するたびに、エラー メッセージを表示してフォームをユーザーに送り返したいと思います。電子メール入力フィールドには、値として無効な電子メールが含まれている必要があります。

input(type="email")問題は、無効な電子メール値でフィールドを初期化できないことです。のみinput(type="text")動作します。ここにがあります。

この制限を回避する方法はありますか? input(type="text")カスタム ディレクティブを使用したくありません。input(type="email")モバイルデバイスのキーボードレイアウトを変更するため、維持したいと思います。

前もって感謝します!

4

4 に答える 4

0

残念ながら、モデルを初期化して無効なデータを表示するには、AngularJS にパッチを適用する必要があります。実際、検証済みのフィールドを無効なデータで初期化すると、空白で表示されます。

有効な電子メールなしで電子メール入力が空白で表示されるコードは次のとおりです。

https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js (622 行目)

  var emailValidator = function(value) {
    if (ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value)) {
      ctrl.$setValidity('email', true);
      return value;
    } else {
      ctrl.$setValidity('email', false);
      return undefined;
    }
  };
于 2013-12-06T11:38:29.850 に答える
0

おそらく、入力要素の NEXT に悪いテキストを表示します。

<input type="email" /><span id="emailerror">qidjq&/% is not a valid address</span>
于 2013-08-13T19:50:39.430 に答える
0

モデルをデータで初期化することにより、入力を初期化できます。

例: http://plnkr.co/edit/TUJ6lv?p=preview

于 2013-08-13T20:27:10.080 に答える
0

私がばかげている場合は申し訳ありませんが、入力が無効なときにフォームのボタンを無効にすることはできませんか。または、ajax リクエストに対して肯定的な応答が得られるまで、フォームを離れないでください。否定的な応答を受け取った場合は、エラー メッセージを表示します。データはフォームのままです。私は Express.js に詳しくないので、フォームを更新する必要があるかもしれません。Angular のようなフレームワークを使用することの要点は、UI を完全に制御できるようにすることだと思いました。

于 2014-06-23T14:07:03.127 に答える