无法重置 Jquery Raty 在一个评分 div 上的显示
Cannot reset display of Jquery Raty on one rating div
我已经在我的 ASP.NET 核心应用程序中成功实现了 Raty 星级评级,但我遇到了一个我似乎无法解决的问题。
我将库用于双重目的(参见 Sample image of Raty usage):
- 显示实体(即上图中的艺术家)的只读“总分”评分,以及
- 允许每个用户set/edit他们自己对每个艺术家的评级。
数据存储在数据库中,并且在检索主记录时检索艺术家的“总”评级。当登录用户点击“总”评分(顶部的 5 颗星)时,会显示一个 bootstrap toast 弹出窗口,通过 AJAX 检索该艺术家的用户特定评分,并显示他们最后保存的评分评级(如果有的话)。一切都很好,包括在他们更改评级并单击“更新”按钮时将他们的评级保存在数据库中。
但是...我似乎无法弄清楚如何更新“总”艺术家评分(顶部的星星)。第二个 AJAX 调用(当用户单击“更新”按钮时)更新数据库和 returns 新计算的“艺术家”“总”评级,但是当我尝试重置顶部的星星以正确显示时新的艺术家“总”评级,没有任何反应。
有趣的是:我可以使用 $('.userRating').data('raty').score(RatingUserVal);重置原始用户评级(当用户显示弹出窗口时,更改他们的评级,不单击更新,而是单击“X”关闭弹出窗口)。因此,如果他们再次点击“总计”评分,我只需通过 $('.userRating').data('raty').score(RatingUserVal); 重置用户评分效果很好。
但是当我尝试对“总分”评分执行相同操作时,它不起作用??
下面是一些相关代码,所以也许有人可以指出我做错了什么。这是“总”艺术家评分的页面加载:
// Display the Artist 5-star "Rating" on page load.
$('.rating').raty({
hints: ['', '', '', '', ''],
readOnly: true,
path: '/lib/raty-master/lib/images',
score: $('input:hidden[name="RatingTotal"]').val()
});
这是当用户点击“只读”星标(仅限第一次)时,通过 AJAX 检索用户评分并显示在弹出窗口中:
$('.userRating').raty({
hints: ['', '', '', '', ''],
path: '/lib/raty-master/lib/images',
score: $('input:hidden[name="RatingUser"]').val(),
scoreName: 'RatingUser'
});
最后,当用户在弹出窗口中单击“更新”时,我通过 AJAX 更新数据库并获取重新计算的变量。但是当我尝试更新“总”评级(在顶部)时,没有任何反应。这是相关代码,包括我用于数据库更新等的一些变量:
$('input:hidden[name="RatingTotal"]').val(response.data1);
$('input:hidden[name="RatingCount"]').val(response.data2);
$('input:hidden[name="RatingCountString"]').val(response.data3);
$('input:hidden[name="RatingUser"]').val(SelectedRatingUserVal);
$('.ratingCountDisplay').html('(' + response.data3 + ')');
$('.rating').data('raty').score(response.data1);
// NOTE: I tried using the‘move’ function too (instead of $('.rating').data('raty').score(response.data1);), but no success.
$('.rating').data('raty').move(response.data1);
无论如何,我希望我的所有 explanation/code/image 能对您有所帮助,并且有人可以迅速指出我的错误。
干杯...
在@Yiyi You 的一个很好的建议下,解决方案是在设置'.rating'分数时切换只读属性。显然,当“.rating”处于只读模式时,它不会让您重置星标显示。因此解决方案是:
$('.rating').data('raty').readOnly(false);
$('.rating').data('raty').score(response.data1);
$('.rating').data('raty').readOnly(true);
简洁大方。再次感谢您的建议,希望这对其他人有所帮助。
干杯...
我已经在我的 ASP.NET 核心应用程序中成功实现了 Raty 星级评级,但我遇到了一个我似乎无法解决的问题。
我将库用于双重目的(参见 Sample image of Raty usage):
- 显示实体(即上图中的艺术家)的只读“总分”评分,以及
- 允许每个用户set/edit他们自己对每个艺术家的评级。
数据存储在数据库中,并且在检索主记录时检索艺术家的“总”评级。当登录用户点击“总”评分(顶部的 5 颗星)时,会显示一个 bootstrap toast 弹出窗口,通过 AJAX 检索该艺术家的用户特定评分,并显示他们最后保存的评分评级(如果有的话)。一切都很好,包括在他们更改评级并单击“更新”按钮时将他们的评级保存在数据库中。
但是...我似乎无法弄清楚如何更新“总”艺术家评分(顶部的星星)。第二个 AJAX 调用(当用户单击“更新”按钮时)更新数据库和 returns 新计算的“艺术家”“总”评级,但是当我尝试重置顶部的星星以正确显示时新的艺术家“总”评级,没有任何反应。
有趣的是:我可以使用 $('.userRating').data('raty').score(RatingUserVal);重置原始用户评级(当用户显示弹出窗口时,更改他们的评级,不单击更新,而是单击“X”关闭弹出窗口)。因此,如果他们再次点击“总计”评分,我只需通过 $('.userRating').data('raty').score(RatingUserVal); 重置用户评分效果很好。
但是当我尝试对“总分”评分执行相同操作时,它不起作用??
下面是一些相关代码,所以也许有人可以指出我做错了什么。这是“总”艺术家评分的页面加载:
// Display the Artist 5-star "Rating" on page load.
$('.rating').raty({
hints: ['', '', '', '', ''],
readOnly: true,
path: '/lib/raty-master/lib/images',
score: $('input:hidden[name="RatingTotal"]').val()
});
这是当用户点击“只读”星标(仅限第一次)时,通过 AJAX 检索用户评分并显示在弹出窗口中:
$('.userRating').raty({
hints: ['', '', '', '', ''],
path: '/lib/raty-master/lib/images',
score: $('input:hidden[name="RatingUser"]').val(),
scoreName: 'RatingUser'
});
最后,当用户在弹出窗口中单击“更新”时,我通过 AJAX 更新数据库并获取重新计算的变量。但是当我尝试更新“总”评级(在顶部)时,没有任何反应。这是相关代码,包括我用于数据库更新等的一些变量:
$('input:hidden[name="RatingTotal"]').val(response.data1);
$('input:hidden[name="RatingCount"]').val(response.data2);
$('input:hidden[name="RatingCountString"]').val(response.data3);
$('input:hidden[name="RatingUser"]').val(SelectedRatingUserVal);
$('.ratingCountDisplay').html('(' + response.data3 + ')');
$('.rating').data('raty').score(response.data1);
// NOTE: I tried using the‘move’ function too (instead of $('.rating').data('raty').score(response.data1);), but no success.
$('.rating').data('raty').move(response.data1);
无论如何,我希望我的所有 explanation/code/image 能对您有所帮助,并且有人可以迅速指出我的错误。
干杯...
在@Yiyi You 的一个很好的建议下,解决方案是在设置'.rating'分数时切换只读属性。显然,当“.rating”处于只读模式时,它不会让您重置星标显示。因此解决方案是:
$('.rating').data('raty').readOnly(false);
$('.rating').data('raty').score(response.data1);
$('.rating').data('raty').readOnly(true);
简洁大方。再次感谢您的建议,希望这对其他人有所帮助。
干杯...