【发布时间】:2016-03-30 07:03:11
【问题描述】:
我有一个 ajax“关注”按钮。它工作正常,提交按钮的属性disabled 后变为"disabled"。但我想在提交后将“关注”按钮更改为“取消关注”按钮,就像在 Twitter 中一样。这个怎么做?我试过这个来改变按钮的属性“form”来提交另一个表单:
success:function(){
$button.attr('form','unfollow');
但不幸的是它不起作用。
模板event.html:
{% if user in event.users.all %}
<form id="unfollow">
{% csrf_token %}
<input type="hidden" value="{{ event.id }}" name="remove">
<button type="submit" class="btn btn-warning btn-block">{% trans "Unfollow"%}</button>
</form>
{% else %}
<form id="follow">
{% csrf_token %}
<input type="hidden" value="{{ event.id }}" name="add">
<button type="submit" class="btn btn-primary btn-block">{% trans "Follow"%}</button>
</form>
{% endif %}
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.min.js"></script>
<script type="text/javascript">
$(document).on('submit','#unfollow', function(e){
var $button = $(this).find('button');
e.preventDefault();
$.ajax({
url:'/event/{{ event.id }}/',
data: "remove={{ event.id }}",
success:function(){
$button.attr('disabled', 'disabled').text('{% trans "Unfollowed" %}');
}
})
});
$(document).on('submit','#follow', function(e){
var $button = $(this).find('button');
e.preventDefault();
$.ajax({
url:'/event/{{ event.id }}/',
data: "add={{ event.id }}",
success:function(){
$button.attr('disabled', 'disabled').text('{% trans "Followed" %}');
}
})
});
</script>
views.py
user = request.user
if request.GET.get('add'):
event.users.add(user)
event.save()
if request.GET.get('remove'):
event.users.remove(user)
event.save()
【问题讨论】: