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