我让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的帮助。这很好用。用户可以刷新页面并获得更多投票,但我对使用会话来防止这种情况有一些想法...
答案 0 :(得分:2)
切换发生的原因是这部分:!$(ri).rateit('readonly')
。
这是由!
和$(ri).rateit('readonly')
两部分构建的。感叹号(!
)是逻辑非运算符,并且否定后面的任何内容($(ri).rateit('readonly')
。
所以它说,取得readonly属性的当前值,然后翻转它 创建切换效果。
您想要做的是:
$(ri).rateit('readonly', true);
迫使它进入只读模式。