这个想法是用户从下拉列表中选择用户向他们发送电子邮件。因此,当选择新用户时,该用户的电子邮件地址需要使用以下格式与其他用户连接:'user1@mail.com','user2@mail.com','user3@mail.com'
需要此格式,因为我使用Django,这是recipient list
的格式。
现在我可以使用Ajax
带来所选用户的电子邮件地址但不能以我需要的方式连接,这就是我所拥有的:
forms.py
class MyForm(forms.Form):
userslist = forms.ModelChoiceField(queryset = User.objects.filter(here goes my condition to show the users), empty_label='List of users', label='Users', required=False)
emailaddress = forms.CharField(max_length=1000, label='Send to:', required=False)
comment = forms.CharField(widget=CKEditorUploadingWidget(), label="Comment:")
现在我的Ajax视图
views.py
class mails(TemplateView):
def get(self, request, *args, **kwargs):
id_user = request.GET['id']
us = User.objects.filter(id = id_user)
data = serializers.serialize('json', us, fields=('email'))
return HttpResponse(data, content_type='application/json')
现在我的JQuery:
<script>
$('#id_userlist').on('change', concatenate);
function concatenate() {
var id = $(this).val();
$.ajax({
data: { 'id': id },
url: '/the_url_to_get_data/',
type: 'get',
success: function (data) {
var mail = ""
for (var i = 0; i < data.length; i++) {
mail += data[i].fields.email
$('#id_emailaddress').val(mail)
}
}
})
}
</script>
如何以嵌套格式连接值?
如果需要更多信息,请告诉我。
答案 0 :(得分:1)
使用.join
将数组元素与分隔符连接起来。并使用.map
从data
的每个元素中提取电子邮件。
success: function(data) {
var mail = data.map(function(el) {
return el.fields.email;
}).join(',');
$("#id_emailaddress").val(email);
}