Привет. Помогите решить проблему. Ситуация такая, человек находится на странице записи и нажимает на лайк несколько раз, потом тому кому поставили лайк, в уведомлении (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; }проверил - это запретит вообще отмену рейтинга тут на форуме с сердечками. Ну думаю вообще там где рейтинг с сердцами используется
спасибо большое, теперь работает без ошибок!