我正在使用JQuery星级评级插件(v2.61) http://www.fyneworks.com/jquery/star-rating/。一切都在进行 好吧,但我想在用户投票时禁用星标。
目前我的用户选择他们的评级并单击鼠标。这个 通过AJAX调用更新我的数据库。明星评估师改为 显示用户的选择,星号显示为红色。然而 如果用户将鼠标滑过星星,它们仍处于活动状态 他们可以提交另一票。我正在停止这次重复投票 服务器端,但从可用性的角度来看,我喜欢星星 在用户点击后被禁用。
(我想我可以用JQuery重新加载div或者东西以显示一个 只读星星的版本,但我希望还有更多 优雅而简单的解决方案)。
感谢。
答案 0 :(得分:5)
为什么不允许用户更新他们的评分?也许他们的第一个评级是仓促,他们想改变它,或者可能只是点击了错误的明星。
当然,您需要某种方式来识别每个用户,并在某处存储每个项目的每个用户评级。
(我实际上并不知道如何做到这一点,但从可用性的角度来看,这似乎是一种更好的方法,而不是确保你第一次就做对,因为之后你无法改变它。)< / p>
答案 1 :(得分:3)
该插件的最新版本已解决该问题。现在回调你可以做到:
this.rating('disable');
Yey!
答案 2 :(得分:2)
这可能类似于“重新加载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属性来使用 控制仅用于显示目的
<input name="star3" type="radio" class="star" disabled="disabled"/>
<input name="star3" type="radio" class="star" disabled="disabled"/>
<input name="star3" type="radio" class="star" disabled="disabled" checked="checked"/>
<input name="star3" type="radio" class="star" disabled="disabled"/>
<input name="star3" type="radio" class="star" disabled="disabled"/>
答案 3 :(得分:2)
我是该插件的作者,我只是(字面上只是)发布了一个新版本(3.1),它应该处理你在这里讨论过的问题。
@ planetjones, 请注意this.rating('禁用');与this.rating不同('readOnly'); this.rating('readOnly')将阻止控件更改当前选择,而this.rating('disable')将阻止值完全提交。
@ svinto, 该插件用于删除无线电盒,但现在它隐藏了它们。 为了恢复,你所要做的就是 去掉星星 2.显示收音机盒 3.从收音机框中删除插件的数据 - $()。data('rating')和$()。data('rating.star') 4.从无线电盒中取消绑定“更改”事件
顺便说一句,更新将在这里公布: http://twitter.com/fyneworks
答案 4 :(得分:1)
你真正想要的是将元素恢复为单选按钮,然后添加只读,然后再次使它们看起来很好。恢复似乎不可能,但您可以解除发布到服务器上的所有事件。 $( “...”)解除绑定();