2017-01-16 3 views
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) 
+0

JavaScriptはページ読み込み間に永続性がありません。あなたはページの状態をlocalStorageに保存するか、クッキーにするか、ajaxを使ってサーバーに送信してそこに保存し、保存された値を読み込んでそれに応じて反応させる必要があります。 – charlietfl

+0

ページが読み込まれたときに、もしそうなら、ドキュメントロード時にjavascriptの長さを計算し、ajaxコールバックで使用するのと同じアルゴリズムを使用して要素の高さを変更するのは簡単でしょう。もしそうでなければ、あなたは@charlietflが示唆するようにその情報をどこかに格納する必要があります。 – ChidG

+0

これを参照してください。http://stackoverflow.com/questions/33784443/how-modify-a-property-of-external-css-file-using-jquery-javascript –

答えて

0

のviews.py:ここに私のjsがありますに高さを保存するには、まず次のような高さがあるかどうかチェックする必要があります。

success: function(data) { 
    console.log(data.text_length); 
    var ls = window.localStorage, // <---------Initialize here 
     increaseHeight; 
    if (data.text_length < 15) { 
    increaseHeight = ls.getItem('height') || 30; // <-----check here if there is any 
    } 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); 
    ls.setItem('height', $('.commentsContainer').css('height')); //<-----store after adding. 
} 
+0

これを試しても機能しませんでした。まだ高さは元の値に戻ります。 – Zorgan

関連する問題