2016-09-30 4 views
1

Я хочу поле формы в форме angularjs, чтобы я мог вводить несколько идентификаторов электронной почты, разделенных запятыми, и они обновляются в объекте $ scope в форме массива. Для примера. в поле формы я ввел идентификаторы электронной почты: [email protected], [email protected], [email protected] Теперь в переменной $ scope (например, $ scope.emails) я хочу, чтобы они обновлялись, как [ «[email protected]», «[email protected]», «[email protected]»], чтобы отправить форму. Я новичок в angularjs и застрял на этом этапе. Пожалуйста, помогите мне выйти из этой ситуации.Как ввести несколько идентификаторов электронной почты в поле формы angularjs?

+0

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

+0

@MikeMcCaughan, спасибо для вашего ответа, но мне не нужно выбирать идентификаторы электронной почты из раскрывающегося списка. Мне нужно ввести идентификаторы электронной почты вручную. –

ответ

1

Вы можете

  1. связывают значение поля формы (нг-модель), а что-то вроде $scope.emailField.
  2. использование ng-blur, чтобы связать функцию от объема разобрать значение $scope.emailField (сплит запятой)
  3. присвоить массив результатов обратно в $scope.emails.
+0

спасибо за ваше предложение. что я могу сделать, если я хочу проверить проверку идентификаторов электронной почты в одно и то же время? –

+0

@AmandeepSachan. Затем вы можете определить соответствующее ** regex ** и использовать встроенную директиву 'ng-pattern' в угловом поле в поле ввода, чтобы получить true/false из' $ scope.emailField. $ Valid' и отобразить собственное пользовательское сообщение об ошибке для пользователя. –

0

вы можете использовать ng-tags-input для этой цели

или использовать этот код

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 Спасибо за ваше любезное предложение. –

Смежные вопросы