用户费率后禁用jquery star插件

时间:2012-09-03 16:21:07

标签: javascript jquery-ui jquery jquery-plugins

我已经实施了jquery星级评级。当用户添加其费率时,我将其保存到数据库并禁用星级评级 但是在禁用后如果用户再次点击星号,它再次调用js函数并尝试将分数保存到数据库。

<input name="rating" type="radio" class="star" value="3" />
...
$('.star').click(function(event) {
        $.ajax({
                type: "POST",
                url: '@Url.Action("Rate", "Rating")',
                data: $("#rate").serialize(),
                success: function(response) {
                    alert('Your rating has been recorded');   
                    $('.star').rating('disable', true);
                },
                error: function(response) {
                alert('There was an error.');
              }
            });
        });

1 个答案:

答案 0 :(得分:4)

你可以在ajax调用之后取消绑定点击事件(使用off()

 $('.star').click(function(event) {
     var $this = $(this);
     ...
     success: function(response) {
         alert('Your rating has been recorded');   
         $this.off('click');
     },

 });

我想你可能有几个.star个元素,所以你应该解除绑定点击链接上附带的处理程序。

另一个更简单的可能性是使用.one()绑定处理程序,就像这样

 $('.star').one('click', function(event) {
     var $this = $(this);
     ...
     success: function(response) {
         alert('Your rating has been recorded');   

     },

 });

这将只允许每个不同的.star元素的一次点击事件

无论如何,我强烈建议你在服务器端进行这种检查。不要依赖客户端进行可能改变服务器上数据的操作