0
.comment_form
が送信されるたびに私のdivの高さを上げるための$ .ajax()呼び出しがあります(ajaxコメント)。だからこれはうまく動作しますが、新しいheight
を保存しないので、ページをリフレッシュすると元の高さに戻ります。
base.js
$('.comment_form').on('submit', function(e) {
e.preventDefault();
var url = window.location.href.split('?')[0];
$.ajax({
type: 'POST',
url: url,
data: {
text: $('.comment_text').val(),
csrfmiddlewaretoken: $("input[name='csrfmiddlewaretoken']").val(),
},
success: function(data) {
console.log(data.text_length);
if(data.text_length < 15) {
var increaseHeight = 30;
}
else {
increaseHeight = (data.text_length) + 20;
}
$('.commentsContainer').append("<div class='comment_div'><h3>" + data.username + "</h3><p>" + data.text + "</p></div>");
$('.commentsContainer').css('height', '+=' + increaseHeight);
},
});
CSS
.commentsContainer {
height: 600px;
}
ジャンゴあなたはを使用することができます
...
ajax_comment = request.POST.get('text')
comment_length = len(str(ajax_comment))
comments = Comments.objects.all()
if request.is_ajax():
if comment.is_valid():
comment = Comments.objects.create(comment_text=ajax_comment, author=str(request.user))
comment.save()
username = str(request.user)
return JsonResponse({'text': ajax_comment, 'text_length': comment_length, 'username': username})
return render(request, 'article.html', context)
JavaScriptはページ読み込み間に永続性がありません。あなたはページの状態をlocalStorageに保存するか、クッキーにするか、ajaxを使ってサーバーに送信してそこに保存し、保存された値を読み込んでそれに応じて反応させる必要があります。 – charlietfl
ページが読み込まれたときに、もしそうなら、ドキュメントロード時にjavascriptの長さを計算し、ajaxコールバックで使用するのと同じアルゴリズムを使用して要素の高さを変更するのは簡単でしょう。もしそうでなければ、あなたは@charlietflが示唆するようにその情報をどこかに格納する必要があります。 – ChidG
これを参照してください。http://stackoverflow.com/questions/33784443/how-modify-a-property-of-external-css-file-using-jquery-javascript –