2013-01-18 197 views
3

我不是一個JavaScript大師,所以請耐心等待我。Javascript評分系統

我一直在尋找一個良好的評價與js和我跑到他的博客:

http://www.marcofolio.net/webdesign/jquery_quickie_colourful_rating_system_with_css3.html

作者有一個演示,並提供代碼下載。

它看起來非常好,除了它沒有保存顏色的例子。因此,一旦用戶移開鼠標,顏色就會變回黑色(默認顏色)。

任何想法如何使顏色固定?

+0

你有jQuery的顏色插件? http://archive.plugins.jquery.com/project/color – danjp

+0

是的,我喜歡。我遵循TimDog的建議。它不會將顏色恢復爲黑色,但是當我從高到低的評級時,它不會更改較高的評級顏色。所以我想我必須恢復他們所有的默認顏色,然後基於投票顏色他們再次?你有更好的建議或解決方案嗎? –

回答

2

除了代碼TimDog有加:

加入

_rated = false; 

$(".fav_rating li label").hover(function() { 

重置每次用戶懸停在收視率的顏色。然後,當他們點擊_rated設置爲true,並因此防止顏色變化

此外,我在我的表單中使用隱藏的輸入,將包含評級的值。要做到這一點我的.click看起來像如下:

$(".fav_rating li label").click(function(e) { 
    e.preventDefault(); 
    _rated = true; 
    $("#item_fav_rating").val($(this).parent().index() + 1) 
}); 
1

這裏有一種方法 - 我在示例代碼中採取了仔細看看script.js

添加這個全局變量animationTime

var _rated = false; 

的顏色在這裏重設下 - 看我如何」我使用了_rated變量嗎?

// Restore all the rating to their original colours 
if (_rated) $("#rating li a").stop().animate({ backgroundColor : "#333" } , animationTime); 

然後在點擊處理程序:

//Prevent the click event and show the rating 
$("#rating li a").click(function (e) { 
    e.preventDefault(); 
    _rated = true; 
    //alert("You voted on item number " + ($(this).parent().index() + 1)); 
}); 

這將保持顏色突出顯示。當您刷新頁面或重新運行上面的重置動畫行時,它將被重置。

希望這會有所幫助。

+0

當他們從較高的評分變爲較低的評分時,這是否奏效? – MikeSmithDev

+0

非常感謝您的建議。這很好,它可以防止顏色回到原來的顏色。然而,如果你從高評級走低,它不會將高評級恢復到原來的水平。有什麼建議麼? –

0

我還沒有看到你提到的博客的代碼,但似乎當用戶點擊任何按鈕它顯示警報即使用onclick()。所以你可以有一個全局變量來保存數字,在那裏你可以添加代碼來保持顏色。