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

时间:2015-02-12 20:37:18

标签: jquery django rating-system

我让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的帮助。这很好用。用户可以刷新页面并获得更多投票,但我对使用会话来防止这种情况有一些想法...

1 个答案:

答案 0 :(得分:2)

切换发生的原因是这部分:!$(ri).rateit('readonly')。 这是由!$(ri).rateit('readonly')两部分构建的。感叹号(!)是逻辑非运算符,并且否定后面的任何内容($(ri).rateit('readonly')

所以它说,取得readonly属性的当前值,然后翻转它 创建切换效果。

您想要做的是:

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

迫使它进入只读模式。