【发布时间】:2020-04-03 11:56:04
【问题描述】:
有一个我想要实施的星级评定,它的工作范围是可以点击星星,我遇到的问题是当我显示多组星星时。发生的事情是点击了哪一组星星,它会影响另一组,只有改变点击的数量。如果我没有很好地解释,假设我有 3 颗星,我去第一组并给它一个 5 星评级,它保持这个值(都很好),但是如果去下一组星并给这个值说 2,这第二组将保持 2 星的值,但是上面的设置设置为无。就像检查的事件对于每个集合并不是唯一的并且重置另一个集合。我为此使用 bootstrap 和 Knockout js,我试图提供一个唯一的 ID,希望可以解决它,但没有运气。任何人都可以帮助解决这个问题?
下面的代码,我已经跳过了一些创建我的可观察数组的淘汰赛代码,我有这个工作,因为我为我的每个 feedbackToBeLeft 数组获得了一组星
<style>
.star-rating {
font-size: 0;
}
.star-rating__wrap {
display: inline-block;
font-size: 16px;
}
.star-rating__wrap:after {
content: "";
display: table;
clear: both;
}
.star-rating__ico {
float: right;
padding-left: 2px;
cursor: pointer;
color: #9933cc;
}
.star-rating__ico:last-child {
padding-left: 0;
}
.star-rating__input {
display: none;
}
.star-rating__ico:hover:before,
.star-rating__ico:hover ~ .star-rating__ico:before,
.star-rating__input:checked ~ .star-rating__ico:before {
content: "\f005";
}
<div data-bind="foreach: feedbackToBeLeft"><table style="background-color:transparent;border:none;">
<tr>
<td style="width:100px;">
Rating
</td>
<td>
<div class="star-rating" data-bind="attr: { id: 'star_' + bookingGuid }">
<div class="star-rating__wrap" data-bind="attr: { id: 'wrap_' + bookingGuid }">
<input class="star-rating__input" data-bind="attr: { id: 'star5_' + bookingGuid }" type="radio" name="rating" value="5">
<label class="star-rating__ico fa fa-star-o fa-lg" data-bind="attr: { for: 'star5_' + bookingGuid }" title="Amazing"></label>
<input class="star-rating__input" data-bind="attr: { id: 'star4_' + bookingGuid }" type="radio" name="rating" value="4">
<label class="star-rating__ico fa fa-star-o fa-lg" data-bind="attr: { for: 'star4_' + bookingGuid }" title="Good"></label>
<input class="star-rating__input" data-bind="attr: { id: 'star3_' + bookingGuid }" type="radio" name="rating" value="3">
<label class="star-rating__ico fa fa-star-o fa-lg" data-bind="attr: { for: 'star3_' + bookingGuid }" title="Ok"></label>
<input class="star-rating__input" data-bind="attr: { id: 'star2_' + bookingGuid }" type="radio" name="rating" value="2">
<label class="star-rating__ico fa fa-star-o fa-lg" data-bind="attr: { for: 'star2_' + bookingGuid }" title="Not good"></label>
<input class="star-rating__input" data-bind="attr: { id: 'star1_' + bookingGuid }" type="radio" name="rating" value="1">
<label class="star-rating__ico fa fa-star-o fa-lg" data-bind="attr: { for: 'star1_' + bookingGuid }" title="Bad"></label>
</div>
</div>
</td>
</tr>
</table></div>
【问题讨论】:
-
您需要独特的
id和for和name用于两组评级,如果您需要提供sn-p -
在你上面的例子中,我没有看到一个独特的
name用于设置 2 个评级星
标签: javascript css arrays twitter-bootstrap-3 knockout.js