我正在使用jQuery Stars Rating插件(http://www.fyneworks.com/jquery/star-rating/)。
我在使用插件的API显示现有评级时遇到了困难。除非数据库中存在现有评级,否则一切正常。如果有的话,将执行以下代码块,并且10个新的评级(我的表单中有多少输入)被发送到后端评级功能。
<cfif aRating.recordCount>
<script type="text/javascript">
$(document).ready(function() {
$('input').rating('select','#aRating.rating#');
});
</script>
</cfif>
此ajax调用应仅在用户点击星标时执行
// Ajax submit rating
$('.star').rating({
callback: function(value, link){
$.ajax({
type: "POST",
url: "#URLFor(controller="membros", action="rateGame", key=gameProfile.id)#",
data: "rating="+value,
dataType: "json",
success: function(response) {
}
});
}
});
表格
<form class="rate-game">
<input type="radio" name="star" class="star {split:2}" value="0.5">
<input type="radio" name="star" class="star {split:2}" value="1">
... until 10
</form>
任何想法导致该功能发射10次?如果我删除了document.ready函数,则没有任何反应,并且未选择现有的评级。
答案 0 :(得分:2)
问题是,插件API很奇怪。当你打电话:
$('input').rating('select', xxx);
它对每个输入元素都做同样的事情。它所做的一件事是调用你的回调函数!你可以通过在那里传递额外的“假”参数来做到这一点:
$('input').rating('select', xxx, false);
以下内容不正确,请将此处保留为历史记录:
您的jQuery选择器:
$(".star")
选择每个单选按钮并为每个按钮运行代码。如果您只想为当前选择的按钮执行此操作,请尝试
$(".star:checked").rating({ ... })