用户投票后锁定星级评分系统 - RateIt jQuery 插件

Lock Star Rating System After User Votes - RateIt jQuery Plugin

我有 RateIt jQuery Plugin 在 Django 应用程序上工作。我正在使用 Ajax 来捕获值并将它们发送到服务器并更新页面上的值。

目前,每次用户点击星星时,我都会计算平均点击次数和总点击次数,并将其显示在星星旁边。由于这个项目正在开发中,我更感兴趣的是让它工作并显示大量数据。

但从可用性的角度来看,我认为允许用户设置评级一次、两次,或者在我的情况下,5 次似乎是更好的方法。我正在使用文档中的内容,几乎可以满足我的要求:

$(ri).rateit('readonly', !$(ri).rateit('readonly'));

我在脚本中设置了一个计数器(例如,counter++;),在 if 语句中,我设置为 readonly。问题是如果用户再次单击星星,它会切换 write 模式(非 readonly)。

此后的每次点击只会切换 readonly 模式。

更新

在@Gidon(我相信是 RateIt 的创建者)的帮助下,我已经解决了这个问题。这是 Ajax 脚本中的位。我用 counter = 0; 在 Ajax 调用之外启动了一个计数器,然后用 counter++; 迭代它并用它来测试:

if (counter >= 3) {
    $(ri).rateit('readonly', true);
    $('.rateit').off('click');
}

我将其设置为 readonly 模式并删除了与 jQuery 的 off() 的点击绑定。

感谢@Gidon 的帮助。这工作正常。用户可以刷新页面并获得更多投票,但我有一些关于使用会话来防止这种情况的想法...

切换是因为这部分:!$(ri).rateit('readonly')。 这是由 !$(ri).rateit('readonly') 两部分组成的。感叹号 (!) 是逻辑非运算符,否定它后面的任何内容,($(ri).rateit('readonly').

所以它说,取只读属性的当前值,然后翻转它,这样 创建切换效果。

您想做的是:

$(ri).rateit('readonly', true);

强制它进入只读模式。