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