2011-01-07 1 views
1

После голосования голосов я хочу обновить счет.Как обновить номер в html через javascript?

<form class="vote-form" action=""> 
    <div id="{{key}}" class="vote-count">{{votes}}</div> 
    <input class="vote-button" type="submit" class="text-button" value="vote+"/> 
    <input type="hidden" class="brag" name="brag" value="{{key}}"> 
    <input type="hidden" class="voter" name="voter" value="{{current_user.fb_id}}"> 
</form> 

<script type="text/javascript"> 
    $(function() { 
    $('.error').hide(); 
    $(".vote-form").submit(function() { 
     var inputs = $(this).find('input:hidden'); 
     var key = $('input.brag', this).val(); 
     $.ajax({ 
     type: "POST", 
     url: "/bean", 
     data: inputs, 
     success: function() { 
      //not sure how to do this, I want to increment {{votes}} 
      $('#' + key).innerHTML = "foo"; 
     } 
     }); 
     return false; 
    }); 
    }); 
</script> 
+0

Что такое '{{key}}'? Похож на какой-то серверный код, который генерирует HTML. Если это так, вам нужно будет использовать это и в своем JavaScript. Если нет ... ну, это не юридический атрибут id. :) – Phrogz

+0

ключ создан шаблоном Django. Так будет ли javascript не читать значение, генерируемое {{key}} ?? –

+0

Я раньше не видел ваш код 'input.brag'. Да, все будет хорошо. Обратите внимание, что вы также можете удалить «class =» brag »и просто использовать' var key = $ ('input [name = brag]'). Val(); ' – Phrogz

ответ

2
var $div = $('#' + key), 
    intValue = parseInt($div.html(), 10); 

$div.html(++intValue); 
+0

К сожалению, пришлось добавить некоторое кэширование из чистого побуждения , В противном случае, +1 – Stephen

+0

Удивительный! Я разработчик Java, который также изучил ruby ​​и python, но я не могу понять js/jquery. Документы jquery сбивают меня с толку и не дают ответов. Если вы знаете хороший ресурс для изучения jquery, пожалуйста, напишите мне. –

+0

@ Stephen Вот так и получилось, что мой ответ был похож –

2

Если вы хотите, чтобы слепо добавить 1 к тому, что значение в HTML уже:

$('#'+key).html(function(i,old){ return old*1 + 1; }); 

Я бы, однако, адвокат, имеющий сервер вернуть правильный подсчет голосов в ответ /bean и используя это для обновления HTML.

+0

+1 Мой оригинальный комментарий удален, потому что это было просто неправильно. С другой стороны, 'parseInt ('074', 10)' все еще приятнее неожиданного '* 1', IMO. – lonesomeday

+0

@lonesomeday Каждому свое. В [мой пост здесь] (http://stackoverflow.com/questions/3638074/javascript-adding-two-numbers-incorrectly/4600744#4600744), я предпочитаю метод, который a) короче для ввода, b) быстрее для выполнения, и c) не будет молча игнорировать мусор, который я должен быть готов к обработке. – Phrogz

+0

Все справедливые точки. – lonesomeday

Смежные вопросы