如何在angularjs表单字段中输入多个电子邮件ID?

时间:2016-09-30 19:44:32

标签: javascript html angularjs forms

我想要一个angularjs形式的表单字段,这样我就可以输入多个以逗号分隔的电子邮件ID,并以数组形式在$ scope对象中进行更新。 例如。在表单字段中,我输入了电子邮件ID:ads@gmail.com,aman @ gmail.com,qaz @ yahoo.com 现在在我的$ scope变量(比如' $ scope.emails')中,我希望它们像[" ads@gmail.com" ;," aman @ gmail一样更新。 com"," qaz@yahoo.com"]发布表单。 我是angularjs的初学者,并且在这个阶段停留了。请帮助我摆脱这种情况。

3 个答案:

答案 0 :(得分:1)

你可以

  1. 将表单字段值(ng-model)绑定为$scope.emailField之类的内容。
  2. 使用ng-blur绑定范围上的函数以解析$scope.emailField的值(以逗号分隔)
  3. 将结果数组分配回$scope.emails

答案 1 :(得分:0)

您可以将ng-tags-input用于此目的

或使用此代码

return text.split(",");

在ng-model setter getter或任何事件中

答案 2 :(得分:0)

我认为@Leon li的解决方案很好,但是为了添加替代方案,您可以使用REGEX处理字段的输入,然后再将其发送到服务器。

/\s*(?:([a-z0-9.!#$%&’*+=?^_`{|}~-]+@(?:[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