2016-09-30 4 views
1

anglejs形式のフォームフィールドが必要なので、複数の電子メールIDをコンマで区切って入力することができ、$ scopeオブジェクトを配列形式で更新できます。 たとえば、フォームフィールドに私は電子メールidsを入力しました:[email protected][email protected][email protected] 今私の$ scope変数( '$ scope.emails')で、私はそれらを[ "[email protected]"、 "[email protected]"、 "[email protected]"]をクリックしてフォームにPOSTします。 私はangularjsで初心者であり、この段階で固執しています。このような状況から抜け出すために私を助けてください。anglejsフォームフィールドに複数のメールIDを入力するにはどうすればよいですか?

+0

http://angular-ui.github.io/ui-select/demo-multiple-selection.html –

+0

@MikeMcCaughan、おかげであなたの応答のために私はドロップダウンから電子メールidsを選択する必要はありません。私は電子メールIDを手動で入力する必要があります。 –

答えて

1

することはでき

  1. バインド$scope.emailFieldのようなものとして、フォームフィールドの値(NG-モデル)。
  2. $scope.emailField(コンマによって分割)の値を解析するスコープに機能をバインドするために使用ng-blur
  3. 戻って$scope.emailsに結果配列を割り当てます。
+0

あなたの提案に感謝します。私は電子メールIDの検証を同時にチェックしたいのですが、私は何ができますか? –

+0

@AmandeepSachan次に、対応する**正規表現**を定義し、入力フィールドにangleの組み込み 'ng-pattern'指示文を使用して、' $ scope.emailField。$ valid'から真偽を得ることができます。ユーザーに独自のカスタムエラーメッセージを表示します。 –

0

あなたは、この目的の

ためng-tags-inputを使用するか、NG-モデルセッターゲッターまたは任意のイベントにこのコード

return text.split(","); 

を使用することができます

0

私は@Leonリーのソリューションがあると思います良いものですが、代替案を追加するには、REGEXを使用してフィールドを入力してからサーバーに送信してください。

/\s*(?:([a-z0-9.!#$%&’*+=?^_`{|}~-][email protected](?:[a-z0-9-]+\.){1,3}(?:[a-z0-9-]+)(?::[0-9]+)?))\s*/gi 

この表現は、あらゆる種類の電子メールを受け入れ、それぞれの一致がそれぞれの一致するグループに入れられます。あなたはそのようにようにそれを処理します:

function processEmails (fieldValue) 
{ 
    var output = []; 
    var match = fieldValue.match (emailRegex); 

    if (!match) 
    { 
    //No emails entered. Handle error here 
    } 
    else 
    { 
    //The first index (0) is not a matching group 
    for (var i = 1; i < match.length; i++) 
    { 
     output.push (match[i]); 
    } 
    } 

    return output; 
} 

テストするには:https://regex101.com/r/glZrjC/1

+0

@DominicAcquilinaあなたの親切な提案をありがとう。 –