2016-09-30 62 views
1

我想要一個angularjs形式的表單域,這樣我就可以輸入多個電子郵件id,並以逗號分隔,並以$ array對象的形式進行更新。 例如。在表單字段中,我輸入了電子郵件ids:[email protected][email protected][email protected] 現在在我的$ scope變量中(比如'$ scope.emails'),我希望它們被更新爲[ 「[email protected]」,「[email protected]」,「[email protected]」]發佈表單。 我是angularjs的初學者,並且在這個階段陷入困境。請幫助我擺脫這種情況。如何在angularjs表單域中輸入多個電子郵件ID?

+0

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

+0

@MikeMcCaughan,謝謝爲您的迴應,但我不需要從下拉選擇電子郵件ID。我需要手動輸入電子郵件ID。 –

回答

1

您可以

  1. 綁定表單字段值(NG-模型),就像這樣$scope.emailField
  2. 使用ng-blur結合上的範圍的函數(由逗號分割)來解析的$scope.emailField
  3. 結果數組指派回您$scope.emails
+0

感謝您的建議。如果我想同時檢查電子郵件ID的驗證,我該怎麼辦? –

+0

@AdedeepSachan,然後你可以定義一個相應的**正則表達式**,並在輸入字段中使用角度的內置'ng-pattern'指令來從'$ scope.emailField。$ valid'獲得真/假,並且向用戶顯示您自己的自定義錯誤消息。 –

0

您可以使用ng-tags-input用於此目的

或NG-模型的setter getter或任何事件,使用此代碼

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謝謝你的建議。 –

相關問題