Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在评级系统中从点击的星号中检索值_Javascript_Php_Jquery_Ajax_Json - Fatal编程技术网

Javascript 如何在评级系统中从点击的星号中检索值

Javascript 如何在评级系统中从点击的星号中检索值,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我正在用PHP做一个项目,我对ajax、javascript或json知之甚少,但我知道如果方向正确,我可以做到这一点 我有一个表单(POST)供审核,在表单上我有5个开始评分,到目前为止,我已经能够使用以下方法使开始在悬停时更改颜色: <div class=rating> <div class="star_1 ratings_stars"></div> <div class="star_2 ratings_stars"></

我正在用PHP做一个项目,我对ajax、javascript或json知之甚少,但我知道如果方向正确,我可以做到这一点

我有一个表单(POST)供审核,在表单上我有5个开始评分,到目前为止,我已经能够使用以下方法使开始在悬停时更改颜色:

<div class=rating>
    <div class="star_1 ratings_stars"></div>
    <div class="star_2 ratings_stars"></div>
    <div class="star_3 ratings_stars"></div>
    <div class="star_4 ratings_stars"></div>
    <div class="star_5 ratings_stars"></div> 
</div>
在我的css文件中,我有

.ratings_stars
    {
        background: url('./images/star_blank.png') no-repeat; //images with blank star
    }

.ratings_over 
    {
        background: url('./images/star_overs.png') no-repeat; //colored star
    }
我现在面临的两个问题是:

  • 能够保留正在单击的星星上的“.ratings_over”等级以及之前的等级,但不能保留之后的等级

  • 为了给每个开始值,所以当第三个开始值被单击时,我应该在表单中提交一个值(显然我不认为这是可能的)

  • 总的来说,我想也许可以使用复选框进行评级,以便能够随表单一起提交值,但我将如何在复选框上实现悬停效果?或者我只做一个,然后勾选方框

    通过将javascript更改为:

        $('.ratings_stars').hover(
    
            // Handles the mouseover
    
            function() {
    
                $(this).prevAll().andSelf().addClass('ratings_over');
    
    
            },
    
            // Handles the mouseout
    
            function() {
    
                $(this).nextAll().removeClass('ratings_over');
    
            }
    
        );
    

    高亮显示的开始现在被保留,有没有办法检查有多少hasClass具有highted?然后将值传递给php,可能是隐藏的输入字段

    首先,实际上不需要使用jQuery来处理悬停效果;这只能用CSS完成

    .ratings_stars {
       background: url('./images/star_blank.png') no-repeat; //images with blank star
    }
    
    .ratings_stars:hover {
       background: url('./images/star_overs.png') no-repeat; //colored star
    }
    
    接下来,您可以将
    单击
    事件绑定到启动,并在那里处理逻辑。当您单击星号时,首先我们将从所有星号中删除
    selected
    类,然后将
    selected
    添加到该星号中

    将此添加到CSS中:

    .ratings_stars.selected {
       background: url('./images/star_overs.png') no-repeat; //colored star
    }
    
    和你的JavaScript

    $('.ratings_star').click(function() {
       $('.ratings_star').removeClass('selected'); // Removes the selected class from all of them
       $(this).addClass('selected'); // Adds the selected class to just the one you clicked
    });
    
    最后,我们需要一些方法来保持价值。有两种方法可以解决这个问题。一种方法是使用jQuery的方法运行一些自定义代码,然后提交表单。你可以找出哪颗星被选中,然后把它作为数据发送上去

    不过,我建议一种更简单的方法:为评级添加一个隐藏的输入字段,然后在单击星号时进行更新

    将以下内容添加到您的表单中:

    <!-- start the value at -1 so we know it hasn't been set yet -->
    <input type="hidden" id="rating" name="rating" value="-1"> 
    
    现在,当表单提交时,您将拥有
    评级
    字段,如果他们没有选择任何内容,则该字段将为-1;如果他们选择了任何内容,则该字段将为1-5


    如果表单中只有星星(即,没有其他内容可提交),则可以放弃隐藏元素,直接在单击处理程序中发布一个
    $。post

    首先,实际上不需要使用jQuery来处理悬停效果;这只能用CSS完成

    .ratings_stars {
       background: url('./images/star_blank.png') no-repeat; //images with blank star
    }
    
    .ratings_stars:hover {
       background: url('./images/star_overs.png') no-repeat; //colored star
    }
    
    接下来,您可以将
    单击
    事件绑定到启动,并在那里处理逻辑。当您单击星号时,首先我们将从所有星号中删除
    selected
    类,然后将
    selected
    添加到该星号中

    将此添加到CSS中:

    .ratings_stars.selected {
       background: url('./images/star_overs.png') no-repeat; //colored star
    }
    
    和你的JavaScript

    $('.ratings_star').click(function() {
       $('.ratings_star').removeClass('selected'); // Removes the selected class from all of them
       $(this).addClass('selected'); // Adds the selected class to just the one you clicked
    });
    
    最后,我们需要一些方法来保持价值。有两种方法可以解决这个问题。一种方法是使用jQuery的方法运行一些自定义代码,然后提交表单。你可以找出哪颗星被选中,然后把它作为数据发送上去

    不过,我建议一种更简单的方法:为评级添加一个隐藏的输入字段,然后在单击星号时进行更新

    将以下内容添加到您的表单中:

    <!-- start the value at -1 so we know it hasn't been set yet -->
    <input type="hidden" id="rating" name="rating" value="-1"> 
    
    现在,当表单提交时,您将拥有
    评级
    字段,如果他们没有选择任何内容,则该字段将为-1;如果他们选择了任何内容,则该字段将为1-5


    如果表单中只有星星(即,没有其他内容可提交),则可以放弃隐藏元素,直接在单击处理程序中发布一个
    $。post

    首先,实际上不需要使用jQuery来处理悬停效果;这只能用CSS完成

    .ratings_stars {
       background: url('./images/star_blank.png') no-repeat; //images with blank star
    }
    
    .ratings_stars:hover {
       background: url('./images/star_overs.png') no-repeat; //colored star
    }
    
    接下来,您可以将
    单击
    事件绑定到启动,并在那里处理逻辑。当您单击星号时,首先我们将从所有星号中删除
    selected
    类,然后将
    selected
    添加到该星号中

    将此添加到CSS中:

    .ratings_stars.selected {
       background: url('./images/star_overs.png') no-repeat; //colored star
    }
    
    和你的JavaScript

    $('.ratings_star').click(function() {
       $('.ratings_star').removeClass('selected'); // Removes the selected class from all of them
       $(this).addClass('selected'); // Adds the selected class to just the one you clicked
    });
    
    最后,我们需要一些方法来保持价值。有两种方法可以解决这个问题。一种方法是使用jQuery的方法运行一些自定义代码,然后提交表单。你可以找出哪颗星被选中,然后把它作为数据发送上去

    不过,我建议一种更简单的方法:为评级添加一个隐藏的输入字段,然后在单击星号时进行更新

    将以下内容添加到您的表单中:

    <!-- start the value at -1 so we know it hasn't been set yet -->
    <input type="hidden" id="rating" name="rating" value="-1"> 
    
    现在,当表单提交时,您将拥有
    评级
    字段,如果他们没有选择任何内容,则该字段将为-1;如果他们选择了任何内容,则该字段将为1-5


    如果表单中只有星星(即,没有其他内容可提交),则可以放弃隐藏元素,直接在单击处理程序中发布一个
    $。post

    首先,实际上不需要使用jQuery来处理悬停效果;这只能用CSS完成

    .ratings_stars {
       background: url('./images/star_blank.png') no-repeat; //images with blank star
    }
    
    .ratings_stars:hover {
       background: url('./images/star_overs.png') no-repeat; //colored star
    }
    
    接下来,您可以将
    单击
    事件绑定到启动,并在那里处理逻辑。当您单击星号时,首先我们将从所有星号中删除
    selected
    类,然后将
    selected
    添加到该星号中

    将此添加到CSS中:

    .ratings_stars.selected {
       background: url('./images/star_overs.png') no-repeat; //colored star
    }
    
    和你的JavaScript

    $('.ratings_star').click(function() {
       $('.ratings_star').removeClass('selected'); // Removes the selected class from all of them
       $(this).addClass('selected'); // Adds the selected class to just the one you clicked
    });
    
    最后,我们需要一些方法来保持价值。有两种方法可以解决这个问题。一种方法是使用jQuery的方法运行一些自定义代码,然后提交表单。你可以找出哪颗星被选中,然后把它作为数据发送上去

    不过,我建议一种更简单的方法:为评级添加一个隐藏的输入字段,然后在单击星号时进行更新

    将以下内容添加到您的表单中:

    <!-- start the value at -1 so we know it hasn't been set yet -->
    <input type="hidden" id="rating" name="rating" value="-1"> 
    
    现在,当表单提交时,您将拥有
    评级
    字段,如果他们没有选择任何内容,则该字段将为-1;如果他们选择了任何内容,则该字段将为1-5

    如果表单中只有星星(即,没有其他内容可提交),则可以放弃隐藏元素,直接在单击处理程序中发出
    $.post