У меня есть RateIt jQuery Plugin, работающий над приложением Django. Я использую Ajax для захвата значений и отправки их на сервер и обновления значений на странице.Lock Star Rating System После голосования пользователя - RateIt плагин jQuery
В настоящее время каждый раз, когда пользователь щелкает по звездам, я вычисляю среднее и общее количество кликов и показываю их рядом со звездами. Поскольку этот проект находится в разработке, меня больше интересует его работа и отображение большого количества данных.
Но с точки зрения удобства использования, я думаю, что позволяя пользователю устанавливать рейтинг один раз, два раза или, в моем случае, 5 раз кажется лучшим способом. Я использую что-то из докторов, что почти делает то, что я хочу:
$(ri).rateit('readonly', !$(ri).rateit('readonly'));
я сталкиваюсь счетчик в сценарии (например, counter++;
) и внутри if
заявление, я принялся readonly
. Проблема в том, что пользователь снова нажимает на звезды, он переключает режим write
(не readonly
).
Каждый щелчок после этого просто переключает режим readonly
.
UPDATE
С помощью @Gidon (создатель RateIt, я считаю), я решил эту проблему. Вот бит в сценарии Ajax. Я начал счетчик вне вызова Ajax с counter = 0;
, а затем итеративно его counter++;
и использовал для теста:
if (counter >= 3) {
$(ri).rateit('readonly', true);
$('.rateit').off('click');
}
Я положил его в режим readonly
и удаляется щелчок связывания с JQuery-х off()
.
Спасибо за помощь @Gidon. Это работает нормально. Пользователь может обновить страницу и получить больше голосов, но у меня есть некоторые идеи об использовании сеансов, чтобы предотвратить это ...
Geez, теперь я чувствую, как манекен ;-) Thank. s для достижения, BTW. Я очень ценю это. Клянусь, я пробовал это и другие подходы, такие как '$ ('. Rateit'). Attr ('data-rateit-readonly', 'true');' бесполезно. Может быть, я попробовал нечто подобное ... Во всяком случае, еще раз спасибо. отличный плагин! – nicorellius
О да, еще один быстрый вопрос. Я выполнил ваши рекомендации, и это сработало. Но у меня все еще есть затяжная проблема, так что звезды (в режиме «readonly») все еще используют клики. Они замаскированы переключателями, верно? Должен ли я отключать их тоже? Я ожидаю, что Ajax на событие click (чтобы отправить данные на сервер), возможно, это моя проблема. – nicorellius
Он может использовать радиокнопки, элемент диапазона или элемент выбора.Но основное использование (которое ищет div/span с классом rateit) не использует ничего в маскировке. Посмотрев qat на ваше обновление ответа, вы добавляете свой собственный прослушиватель событий к его компоненту, однако вы можете использовать сборку в событиях, которые занимаются только чтением. '$ ('. rateit'). on ('rated', ....)' – Gidon