fix: 修复评论提交后表单状态未清除的问题

- 将表单重置代码移到 success 回调的最前面,确保优先执行
- 将表单重置与 UI 更新(插入评论、滚动)分离,避免异常影响表单重置
- 确保评论内容、验证码、Geetest 状态都能正确清除
- 修复需要刷新页面才能再次发送评论的问题
This commit is contained in:
2026-01-23 16:41:02 +08:00
parent 882ca001dc
commit c0e21840f1

View File

@@ -1635,54 +1635,14 @@ if (argonConfig.waterflow_columns != "1") {
} }
//发送成功 //发送成功
// 使用 setTimeout 确保 iziToast 操作在下一个事件循环中执行 // 先复位评论表单(确保无论后续操作是否成功都能重置表单)
setTimeout(function() {
try {
iziToast.destroy();
iziToast.show({
title: __("发送成功"),
message: __("您的评论已发送"),
class: 'shadow-sm',
position: 'topRight',
backgroundColor: '#2dce89',
titleColor: '#ffffff',
messageColor: '#ffffff',
iconColor: '#ffffff',
progressBarColor: '#ffffff',
icon: 'fa fa-check',
timeout: 5000
});
//插入新评论
result.html = result.html.replace(/<(\/).noscript>/g, "");
let parentID = result.parentID;
if (parentID == "" || parentID == null){
parentID = 0;
}
parentID = parseInt(parentID);
if (parentID == 0){
if ($("#comments > .card-body > ol.comment-list").length == 0){
$("#comments > .card-body").html("<h2 class='comments-title'><i class='fa fa-comments'></i> " + __("评论") + "</h2><ol class='comment-list'></ol>");
}
if (result.commentOrder == "asc"){
$("#comments > .card-body > ol.comment-list").append(result.html);
}else{
$("#comments > .card-body > ol.comment-list").prepend(result.html);
}
}else{
if ($("#comment-" + parentID + " + .comment-divider + li > ul.children").length > 0){
$("#comment-" + parentID + " + .comment-divider + li > ul.children").append(result.html);
}else{
$("#comment-" + parentID + " + .comment-divider").after("<li><ul class='children'>" + result.html + "</ul></li>");
}
}
calcHumanTimesOnPage();
//复位评论表单
cancelReply(); cancelReply();
$("#post_comment_content").val(""); $("#post_comment_content").val("");
// 重置数学验证码 // 重置数学验证码
$("#post_comment_captcha_seed").val(result.newCaptchaSeed); $("#post_comment_captcha_seed").val(result.newCaptchaSeed);
$("#post_comment_captcha + style").html(".post-comment-captcha-container:before{content: '" + result.newCaptcha + "';}"); $("#post_comment_captcha + style").html(".post-comment-captcha-container:before{content: '" + result.newCaptcha + "';}");
$("#post_comment_captcha").val(""); // 清空验证码输入框 $("#post_comment_captcha").val("");
// 清空Geetest验证码隐藏字段并重置验证码实例 // 清空Geetest验证码隐藏字段并重置验证码实例
if ($("#geetest-captcha").length > 0) { if ($("#geetest-captcha").length > 0) {
@@ -1703,13 +1663,62 @@ if (argonConfig.waterflow_columns != "1") {
} }
} }
} }
$("body,html").animate({
scrollTop: $("#comment-" + result.id).offset().top - 100 // 显示成功提示
}, 500, 'easeOutExpo'); setTimeout(function() {
try {
iziToast.destroy();
iziToast.show({
title: __("发送成功"),
message: __("您的评论已发送"),
class: 'shadow-sm',
position: 'topRight',
backgroundColor: '#2dce89',
titleColor: '#ffffff',
messageColor: '#ffffff',
iconColor: '#ffffff',
progressBarColor: '#ffffff',
icon: 'fa fa-check',
timeout: 5000
});
} catch (e) { } catch (e) {
ArgonDebug.warn('Comment insertion error:', e); ArgonDebug.warn('iziToast error:', e);
} }
}, 0); }, 0);
// 插入新评论
try {
result.html = result.html.replace(/<(\/).noscript>/g, "");
let parentID = result.parentID;
if (parentID == "" || parentID == null){
parentID = 0;
}
parentID = parseInt(parentID);
if (parentID == 0){
if ($("#comments > .card-body > ol.comment-list").length == 0){
$("#comments > .card-body").html("<h2 class='comments-title'><i class='fa fa-comments'></i> " + __("评论") + "</h2><ol class='comment-list'></ol>");
}
if (result.commentOrder == "asc"){
$("#comments > .card-body > ol.comment-list").append(result.html);
}else{
$("#comments > .card-body > ol.comment-list").prepend(result.html);
}
}else{
if ($("#comment-" + parentID + " + .comment-divider + li > ul.children").length > 0){
$("#comment-" + parentID + " + .comment-divider + li > ul.children").append(result.html);
}else{
$("#comment-" + parentID + " + .comment-divider").after("<li><ul class='children'>" + result.html + "</ul></li>");
}
}
calcHumanTimesOnPage();
// 滚动到新评论
$("body,html").animate({
scrollTop: $("#comment-" + result.id).offset().top - 100
}, 500, 'easeOutExpo');
} catch (e) {
ArgonDebug.warn('Comment insertion error:', e);
}
}, },
error: function(result){ error: function(result){
$("#post_comment").removeClass("sending"); $("#post_comment").removeClass("sending");