【问题标题】:Lock Star Rating System After User Votes - RateIt jQuery Plugin用户投票后锁定星级评分系统 - RateIt jQuery 插件
【发布时间】:2015-02-12 20:37:17
【问题描述】:

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

【问题讨论】:

    标签: jquery django rating-system


    【解决方案1】:

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

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

    你想做的是:

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

    这会强制它进入只读模式。

    【讨论】:

    • 天啊,现在我觉得自己像个傻瓜 ;-) 感谢您与我们联系,顺便说一句。对此,我真的非常感激。我发誓我尝试过这种方法和其他方法,比如 $('.rateit').attr('data-rateit-readonly', 'true'); 无济于事。也许我尝试了类似的东西......无论如何,再次感谢。很棒的插件!
    • 哦,是的,还有一个简单的问题。我实施了你的建议,它奏效了。但我仍然有一个挥之不去的问题,即星星(在readonly 模式下)仍在点击。它们是变相的单选按钮,对吧?我也应该禁用它们吗?我将 Ajax 竞价到点击事件(将数据发送到服务器),所以也许这是我的问题。
    • 它可以使用单选按钮、范围元素或选择元素。但是基本用法(查找带有 rateit 类的 div/span)不会变相使用任何东西。查看您的答案更新,您正在将自己的事件侦听器添加到 rate it 组件中,但是您可以使用内置 events ,它会处理只读情况。 $('.rateit').on('rated', ....)
    • 所以我可以这样做:$('.rateit').on('rated', function() { $(ri).rateit('readonly', true); });?
    • 是的,这意味着在评级后它会进入只读模式。很像我的示例页面上的一个示例(请参阅radioactivethinking.com/rateit/example/example.htm#ex_11
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多