Javascript 在一次评级后禁用评级星
嗨,我想把我的网页上的评级星。 它工作正常。正在将评级添加到数据库中 但是用户可以一次又一次地进行评分。 我想明星们应该禁用后率一次。 这是我的密码。请帮帮我谢谢你Javascript 在一次评级后禁用评级星,javascript,jquery,Javascript,Jquery,嗨,我想把我的网页上的评级星。 它工作正常。正在将评级添加到数据库中 但是用户可以一次又一次地进行评分。 我想明星们应该禁用后率一次。 这是我的密码。请帮帮我谢谢你 <!DOCTYPE html> <html lang="en"> <head> <link href="http://online-btw-berekenen.nl/rating/rating.css" rel="stylesheet" type="text/css"> <sc
<!DOCTYPE html>
<html lang="en">
<head>
<link href="http://online-btw-berekenen.nl/rating/rating.css" rel="stylesheet" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript" src="http://online-btw-berekenen.nl/rating/rating.js"></script>
<script language="javascript" type="text/javascript">
$(function() {
$("#rating_star").codexworld_rating_widget({
starLength: '5',
initialValue: '',
callbackFunctionName: 'processRating',
imageDirectory: 'images/',
inputAttr: 'postID'
});
});
function processRating(val, attrVal){
$.ajax({
type: 'POST',
url: 'rating.php',
data: 'postID='+attrVal+'&ratingPoints='+val,
dataType: 'json',
success : function(data) {
if (data.status == 'ok') {
alert('You have rated '+val+' to CodexWorld');
$('#avgrat').text(data.average_rating);
$('#totalrat').text(data.rating_number);
}else{
alert('Some problem occured, please try again.');
}
}
});
}
</script>
<style type="text/css">
.overall-rating{font-size: 14px;margin-top: 5px;color: #8e8d8d;}
</style>
</head>
<body style="background-color:black">
<h1>Give us star</h1>
<input name="rating" value="0" id="rating_star" type="hidden" postID="1" />
<div class="overall-rating">(Average Rating <span id="avgrat"><?php echo $ratingRow['average_rating']; ?></span>
Based on <span id="totalrat"><?php echo $ratingRow['rating_number']; ?></span> rating)</span></div>
</body>
</html>
$(函数(){
$(“#评级明星”).codexworld_评级小部件({
星长:'5',
初始值:“”,
callbackFunctionName:'processRating',
imageDirectory:'images/',
InputTR:“posted”
});
});
函数processRating(val,attrVal){
$.ajax({
键入:“POST”,
url:'rating.php',
数据:“postID=”+attrVal+”&评级点=”+val,
数据类型:“json”,
成功:功能(数据){
如果(data.status=='ok'){
警报(“您对CodexWorld的评级为“+val+”);
$('avgrat')。文本(数据。平均评分);
$('totalrat').text(数据、评级编号);
}否则{
警报('出现问题,请重试');
}
}
});
}
.整体评级{字体大小:14px;页边顶部:5px;颜色:#8e8d8d;}
给我们星星
(平均评级)
(基于评级)
在javascript中单击并悬停函数
(function(a){
a.fn.codexworld_rating_widget = function(p){
var p = p||{};
var b = p&&p.starLength?p.starLength:"5";
var c = p&&p.callbackFunctionName?p.callbackFunctionName:"";
var e = p&&p.initialValue?p.initialValue:"0";
var d = p&&p.imageDirectory?p.imageDirectory:"images";
var r = p&&p.inputAttr?p.inputAttr:"";
var f = e;
var g = a(this);
b = parseInt(b);
init();
g.next("ul").children("li").hover(function(){
$(this).parent().children("li").css('background-position','0px 0px');
var a = $(this).parent().children("li").index($(this));
$(this).parent().children("li").slice(0,a+1).css('background-position','0px -28px')
},function(){});
g.next("ul").children("li").click(function(){
var a = $(this).parent().children("li").index($(this));
var attrVal = (r != '')?g.attr(r):'';
f = a+1;
g.val(f);
if(c != ""){
eval(c+"("+g.val()+", "+attrVal+")")
}
});
g.next("ul").hover(function(){},function(){
if(f == ""){
$(this).children("li").slice(0,f).css('background-position','0px 0px')
}else{
$(this).children("li").css('background-position','0px 0px');
$(this).children("li").slice(0,f).css('background-position','0px -28px')
}
});
function init(){
$('<div style="clear:both;"></div>').insertAfter(g);
g.css("float","left");
var a = $("<ul>");
a.addClass("codexworld_rating_widget");
for(var i=1;i<=b;i++){
a.append('<li style="background-image:url('+d+'/widget_star.gif)"><span>'+i+'</span></li>')
}
a.insertAfter(g);
if(e != ""){
f = e;
g.val(e);
g.next("ul").children("li").slice(0,f).css('background-position','0px -28px')
}
}
}
})(jQuery);
(功能(a){
a、 fn.codexworld\u rating\u widget=函数(p){
var p=p |{};
var b=p&p.starLength?p.starLength:“5”;
var c=p&&p.callbackFunctionName?p.callbackFunctionName:“”;
变量e=p&p.initialValue?p.initialValue:“0”;
var d=p&&p.imageDirectory?p.imageDirectory:“图像”;
var r=p&&p.inputtr?p.inputtr:“”;
var f=e;
var g=a(本);
b=parseInt(b);
init();
g、 下一个(“ul”).子对象(“li”).悬停(函数(){
$(this.parent().children(“li”).css('background-position','0px 0px');
var a=$(this.parent().children(“li”).index($(this));
$(this).parent().children(“li”).slice(0,a+1).css('background-position','0px-28px'))
},函数(){});
g、 下一步(“ul”)。子项(“li”)。单击(函数(){
var a=$(this.parent().children(“li”).index($(this));
变量attrVal=(r!=“”)?g.attr(r):“”;
f=a+1;
g、 val(f);
如果(c!=“”){
评估(c+“(“+g.val()+”,“+attrVal+”)
}
});
g、 next(“ul”).hover(function(){},function(){
如果(f==“”){
$(this).children(“li”).slice(0,f).css('background-position','0px 0px'))
}否则{
$(this.children(“li”).css('background-position','0px 0px');
$(this).children(“li”).slice(0,f).css('background-position','0px-28px'))
}
});
函数init(){
$('')。插入后面(g);
g、 css(“浮动”、“左”);
变量a=$(“”);
a、 addClass(“codexworld_rating_widget”);
对于(var i=1;i确定,在单击处理程序中,只需使用jquery off()方法删除单击事件侦听器。在用户成功选择(记录)评级后,有几个步骤可以禁用单击和悬停事件:
为ajax成功添加一行代码
success : function(data) {
if (data.status == 'ok') {
alert('You have rated '+val+' to CodexWorld');
$('#avgrat').text(data.average_rating);
$('#totalrat').text(data.rating_number);
$('.codexworld_rating_widget').addClass('already_set');
}else{...
然后添加一个函数来禁用每个悬停并单击“”脚本中的
。请参见下面的示例:
g.next("ul").children("li").hover(function(){
if ('.codexworld_rating_widget.alreadyset') {
$('.codexworld_rating_widget').off('click','li').off('hover','li');
}else{
// original script goes here
});
});
无论如何,如果不建立沙箱,我无法测试它,所以…希望它能帮助你找到正确的方向。你在哪里处理点击星星?@FanyoSILIADIN我添加了点击js。请检查你是否提到了原始脚本。你能告诉我哪个原始脚本吗?