Максимальное количество скачиваний -> затем обновите страницу

У меня есть страница загрузки с максимальным количеством загрузок 5 для каждого файла. Каждая загрузка ссылается на download.php? Fileid. При нажатии число загрузок вычитается с одним в базе данных. Но он обновляется только тогда, когда посетитель обновляет страницу.

Теперь я думал, что jQuery поможет мне, и у меня есть это сейчас:

<span class="downloadsleft">5</span><span class="downloadLink">download file</span>

Мой jquery:

<script type="text/javascript">     
                $('.downloadLink').click(function() {

                        var currentValue = $(".amount").text();
                        var newValue = +currentValue - 1;

                        $(".amount").text(newValue);

                        window.open("download.php?file={/literal}{$product.bestandsnaam_hash}{literal}");                   

                        if ((".amount").text == "1")
                        {
                            location.reload();
                        };
                });  

            </script>

Открытое окно работает, но перезагрузка не работает? Кто-нибудь знает эту проблему?

2 ответа

Решение

объяснение

.amount не хорошее название класса! использование .downloadsleft вместо!

поскольку .amount не существует, для переменной не задано начальное значение currentValue,


Решение

( JSFiddle)

Заменить все .amount в вашем JavaScript кодировать .downloadsleft:

ПРИМЕЧАНИЕ: я также добавил parseInt() функция в base10 сравнить количество загрузок с числом.

Javasript/ JQuery

  $('.downloadLink').click(function() {
      var currentValue = $(".downloadsleft").text();
      var newValue = currentValue - 1;

      $(".downloadsleft").text(newValue);

      window.open("download.php?file={/literal}{$product.bestandsnaam_hash}{literal}");                

      if (parseInt(newValue,10) == 1)
      {
          location.reload();
      };
  }); 

Вам не хватает () в тексте

 if ((".amount").text() == "1")

вам не нужно снова извлекать информацию с помощью запроса, она уже находится в var newValue:

 if (newValue == 1)

изменить: ваш код будет работать только для одной загрузки на странице, потому что вы используете тот же ".amount" (я предполагаю, что вы имели в виду ".downloadsleft") для всех загрузок. Одним из решений является использование предыдущего элемента intead для определения местоположения элемента по классу:

$('.downloadLink').click(function() {
      var counter = $(this).prev();
      var newValue = counter.text() - 1;
      counter.text(newValue);
      window.open("download.php?file={/literal}{$product.bestandsnaam_hash}{literal}");                   
      if (newValue == 1) {
          location.reload();
      };
}); 
Другие вопросы по тегам