У меня есть плагин RateIt jQuery, работающий с приложением Django. Я использую Ajax для захвата значений, отправки их на сервер и обновления значений на странице.
В настоящее время каждый раз, когда пользователь нажимает на звездочки, я вычисляю среднее и общее количество кликов и отображаю их рядом со звездочками. Поскольку этот проект находится в разработке, меня больше интересовало, как заставить его работать и отображать много данных.
Но с точки зрения юзабилити, я думаю, лучше разрешить пользователю устанавливать рейтинг один раз, два или, в моем случае, 5 раз. Я использую что-то из документов, которое почти делает то, что я хочу:
$(ri).rateit('readonly', !$(ri).rateit('readonly'));
Я поднимаю счетчик в сценарии (например, counter++;
) и внутри оператора if
устанавливаю значение readonly
. Проблема в том, что если пользователь снова щелкает звездочки, он переключает режим write
(не readonly
).
Каждый щелчок после этого просто переключает режим readonly
.
ОБНОВЛЕНИЕ
С помощью @Gidon (создателя RateIt, я полагаю) я решил эту проблему. Вот фрагмент сценария Ajax. Я запустил счетчик вне вызова Ajax с помощью counter = 0;
, а затем повторил его с помощью counter++;
и использовал это для проверки:
if (counter >= 3) {
$(ri).rateit('readonly', true);
$('.rateit').off('click');
}
Я перевел его в режим readonly
и удалил привязку кликов с помощью jQuery off()
.
Спасибо за помощь @Gidon. Это работает нормально. Пользователь может обновить страницу и получить больше голосов, но у меня есть несколько идей, как использовать сеансы, чтобы предотвратить это...