我想要一个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的初学者,在这个阶段被困住了。请帮我摆脱这个困境。
你可以
- 将表单字段值(ng-model)绑定为类似
$scope.emailField
的东西。 - 使用
ng-blur
在作用域中绑定一个函数来解析$scope.emailField
的值(以逗号分隔) - 将结果数组赋值给
$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