正如你從圖片中看到的,我在一個頁面中有幾種形式。每個表單都有自己的塊和評論列表。一個頁面中的多個表單更新混凝土塊?
我成功地通過AJAX/JQuery更新評論塊後成功添加新的評論的形式。可以說,如果用戶通過三維形式添加評論AJAX需要更新三維形式的三維評論塊。下面你可以看到我的JS代碼。
問題是,當我對所有表單(任務評論表單)使用相同的id,並且所有評論塊(task-comments)的相同id都很好地只用第一種形式。當我提交第二個或第三個表格時,它會更新第一個註釋塊。我認爲JS從上到下檢查文檔並找到第一個匹配。
當我對所有表單和註釋塊使用相同的類時,它的工作方式也是錯誤的。例如,當我提交所有3個評論塊更新的第二個表單。
那麼如何將特定的表單與特定的註釋塊相關聯?
JS:
$(document).ready(function() {
$('.submit').on("click", function() {
event.preventDefault();
console.log(event.preventDefault());
var form = $(this).closest('form');
$.ajax({
url: form.attr("action"),
data: form.serialize(),
type: form.attr("method"),
dataType: 'json',
success: function (data) {
if (data.form_is_valid) {
$("#task-comments").html(data.html_task_comment);
}
else {
$("#task-comment-form").html(data.html_task_comment_form);
}
}
});
$("#task-comment-form")[0].reset();
return false;
});
});
task_list.html:
<div class="list-group custom-list-group">
<div class="list-group-item bg-faded">
{% include 'project/task_comment_form.html' %}
</div>
<div id="task-comments-{{ forloop.counter }}">
{% include 'project/task_comment_list.html' %}
</div>
</div>
task_comment_form.html:
<form method="post" id="task-comment-form-{{ forloop.counter }}" action="{% url 'project:task_comment_add' project_code=project.code group_task_code=group_task.code task_code=task.code %}">
<button type="submit"></button>
</form>
task_comment_list.html:
{% for comment in task.comments.all %}
<div class="list-group-item flex-column align-items-start">
<div class="d-flex w-100 justify-content-between">
<h6 class="mb-1">{{ comment.author }}</h6>
<small>{{ comment.created }}</small>
</div>
<p class="custom-p">{{ comment.text }}</p>
</div>
{% empty %}
<div class="list-group-item flex-column align-items-start">
<div class="d-flex w-100 justify-content-center">
<h6 class="mb-1 custom-h"><i class="fa fa-info-circle" aria-hidden="true"></i>	{% trans 'NO COMMENTS' %}</h6>
</div>
</div>
{% endfor %}
您好!你能再次檢查我的帖子,請。我添加我的HTML。我在ID中使用{{forloop.counter}}。所以現在每個表單和塊註釋都有唯一的ID。但是我對你的JS代碼有一點點補充。看來我需要改變commentBoxId中的內容。你怎麼看? –
表單的數量也不固定。在這裏我只舉了三種形式的例子。實際上,它們可以大於或小於3.在模板中,我可以使用'task-comments - {{forloop.counter}}}和'task-comment-form - {{forloop.counter}}'但是不知道在JS中使用它。對不起我的英語不好。 –
你好。您可以在HTML中再次使用計數器來設置「data-comment」屬性。數據評論屬性應設置爲您在評論框中使用的ID。然後,JavaScript可以獲取此數據註釋值,使用它來查找指定的評論框,並僅更新該框。 –