Привет. Помогите решить проблему. Ситуация такая, человек находится на странице записи и нажимает на лайк несколько раз, потом тому кому поставили лайк, в уведомлении (RCL-Notification) приходит много раз уведомление, о том что человек лайкнул запись, один и тот же человек много раз. (Проблема в том что пока человек не перезагрузил страницу, он может много раз нажимать на лайк)
1) Помогите сделать так, что бы можно было лайкнуть только один раз и все.
2) Или сделать так что бы можно было ставить лайк и снова убирать лайк.
Здравствуйте.
Перенесено. Вопрос по системе рейтинга
Можно попробовать сделать через pointer-events: none;
в стилях. Не знаю поможет ли это - не проверял. Да и смотреть надо четко по месту.
Тут надо писать какую-то логику и учитывать подобное поведение.
Готового решения нету. Нужно искать исполнителя через фриланс или через
на этом сайте
Самое простое: Вы административно в правилах подобное напишите. Если не угомонится один, два - можно и санкции навесить. Вам такие кадры нужны?
Кстати да, есть такая проблема с множеством кликов. Больше она будет заметна на медленных серверах, где после клика ответ о сервера ожидается 1+ секунду.
Как вариант я бы заменил стандартную функцию дополнения рейтинга, например, на такое:
function rcl_edit_rating(e){ if(jQuery(e).hasClass('rating-process')) return false; var block = jQuery(e); var parent = block.parents('.rcl-rating-box'); jQuery(e).addClass('rating-process'); rcl_preloader_show(jQuery(e).parents('.rating-wrapper').children('.rating-value'),30); rcl_ajax({ data: { action: 'rcl_edit_rating_post', rating: block.data('rating') }, success: function(result){ if(result['result']==100){ parent.find('.rating-value').html(result['rating']); if(!block.hasClass('user-vote')){ parent.find('.rating-vote').removeClass('user-vote'); } block.toggleClass('user-vote'); } block.animateCss('zoomIn'); if(result.replace_box){ parent.replaceWith(result.replace_box); } rcl_do_action('rcl_edit_rating',{ data:block.data('rating'), result:result }); jQuery(e).removeClass('rating-process'); } }); return false; }
т.е. после клика мы проверяем наличие класса rating-process и если он есть то ничего не делаем. Дальше если класса нет то ставим его и снимаем только после ajax ответа
Подобная задача была у меня - чтоб с подписками не баловались - подписался/отписался кнопки тыкая. Я считал до 3х. Потом писал - лимит исчерпан. Конечно после f5 снова можно долбить. Но это лучше чем ничего
Вообще против настырных как не бейся - кто хочет потыкать сто раз где не надо - найдут способы.
Otshelnik-Fm сказал(а)
Вообще глянул - рейтингу классuser-vote
добавляется если юзер голосовал:
.rating-vote.vote-heart.user-vote { pointer-events: none; }проверил - это запретит вообще отмену рейтинга тут на форуме с сердечками. Ну думаю вообще там где рейтинг с сердцами используется
Дело не в отмене. Если быстро кликнуть на сердечко, то несколько голосов засчитывается. Тут вот не получилось, а у себя на сайте я быстро кликнул несколько раз и в итоге рейтинг поста вместо 0 стал 2, хотя в информации написано что проголосовал только я 1 раз.
Не думаю что есть люди которые специально кликают, но несколько раз кликнуть можно и случайно и если сервер медленный и ты не понял прошел клик или нет.
Otshelnik-Fm сказал(а)
Вообще глянул - рейтингу классuser-vote
добавляется если юзер голосовал:
.rating-vote.vote-heart.user-vote { pointer-events: none; }проверил - это запретит вообще отмену рейтинга тут на форуме с сердечками. Ну думаю вообще там где рейтинг с сердцами используется
спасибо большое, теперь работает без ошибок!