Document.ready函数导致表单提交10次

时间:2010-10-14 17:52:17

标签: jquery

我正在使用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函数,则没有任何反应,并且未选择现有的评级。

1 个答案:

答案 0 :(得分:2)

问题是,插件API很奇怪。当你打电话:

$('input').rating('select', xxx);

它对每个输入元素都做同样的事情。它所做的一件事是调用你的回调函数!你可以通过在那里传递额外的“假”参数来做到这一点:

$('input').rating('select', xxx, false);

以下内容不正确,请将此处保留为历史记录:

您的jQuery选择器:

$(".star")

选择每个单选按钮并为每个按钮运行代码。如果您只想为当前选择的按钮执行此操作,请尝试

$(".star:checked").rating({ ... })