Javascript JQuery星级评定插件-投票提交后禁用

Javascript JQuery星级评定插件-投票提交后禁用,javascript,jquery,ajax,jquery-plugins,Javascript,Jquery,Ajax,Jquery Plugins,我正在使用来自的JQuery星级插件(v2.61) . 一切都在进行中 好吧,但我想在用户投票后禁用stars 当前我的用户选择他们的评级并单击鼠标。这 通过AJAX调用更新我的数据库。星级评定者改为 显示用户的选择,星星显示为红色。然而 如果用户在星星上滚动鼠标,它们仍然处于活动状态,并且 他们可以再投一票。我要停止重复投票 服务器端,但从可用性的角度来看,我希望明星们 在用户单击后将被禁用 (我想我可以用JQuery重新加载div或其他东西来显示 《星星》的只读版本,但我希望还有更多 优雅

我正在使用来自的JQuery星级插件(v2.61) . 一切都在进行中 好吧,但我想在用户投票后禁用stars

当前我的用户选择他们的评级并单击鼠标。这 通过AJAX调用更新我的数据库。星级评定者改为 显示用户的选择,星星显示为红色。然而 如果用户在星星上滚动鼠标,它们仍然处于活动状态,并且 他们可以再投一票。我要停止重复投票 服务器端,但从可用性的角度来看,我希望明星们 在用户单击后将被禁用

(我想我可以用JQuery重新加载div或其他东西来显示 《星星》的只读版本,但我希望还有更多 优雅而简单的解决方案)


谢谢

您真正想要的是将元素还原为单选按钮,然后添加只读,然后再次使它们看起来不错。恢复似乎不可能,但您可以解除post到服务器上的所有事件的绑定$(“…”).unbind()

这可能类似于“重新加载div”解决方案,但我认为最好的解决方案可能是在完成AJAX请求后简单地禁用输入项。如果您使用的是jQuery.ajax,那么可以指定在请求完成后运行的回调函数

jQuery.ajax({
    type: "POST",
    url: ...
    data: ...
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        jQuery('.star').attr('disabled', true);
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        displayError();
    }
});
从他们的网站:

使用disabled属性可以使用 控件仅用于显示目的


为什么不允许用户更新他们的评级?也许他们的第一个评级是仓促的,他们想改变它,或者他们只是点击了错误的星星

当然,您需要某种方法来识别每个用户,并在某处存储每个用户对每个项目的评分


(实际上我不知道如何做到这一点,但从可用性的角度来看,这似乎是一种比第一次确保正确操作更好的方法,因为之后无法更改。)

这个问题在最新版本的插件中得到了解决。现在,在回调中,您只需执行以下操作:

this.rating('disable');

是的

我是这个插件的作者,我刚刚发布了一个新版本(3.1),它应该能够解决您在这里讨论的问题

@琼斯飞机, 请注意,此.rating('disable');与此不同。评级(“只读”); 此.rating('readOnly')将阻止控件更改当前选择,而此.rating('disable')将阻止完全提交值

@斯文托, 该插件用于删除收音机盒,但现在它隐藏了它们。 为了恢复,您所要做的就是 1.除掉星星 2.给我看看收音机 3.从单选框-$().data('rating')和$().data('rating.star')中删除插件的数据 4.从广播框中解除“更改”事件的绑定

顺便说一下,更新将在此处公布:

this.rating('disable');