如何在angularjs表单字段中输入多个email id



我想要一个angularjs形式的表单字段,这样我就可以输入多个以逗号分隔的电子邮件id,并且它们在数组形式的$scope对象中得到更新。如。在表单字段中,我输入了电子邮件id: ads@gmail.com, aman@gmail.com, qaz@yahoo.com现在在我的$scope变量(说'$scope.email ')中,我希望它们像["ads@gmail.com", "aman@gmail.com", "qaz@yahoo.com"]一样更新到POST表单。我是angularjs的初学者,在这个阶段被困住了。请帮我摆脱这个困境。

你可以

  1. 将表单字段值(ng-model)绑定为类似$scope.emailField的东西。
  2. 使用ng-blur在作用域中绑定一个函数来解析$scope.emailField的值(以逗号分隔)
  3. 将结果数组赋值给$scope.emails

可以使用ng-tags-input

或者使用这个代码

return text.split(",");

我认为@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

最新更新