非同期通信でチャットアプリを作っています
メッセージを吹き出しで囲っています
画像も投稿できるのですが、画像のみで投稿すると
メッセージを入力していないのに吹き出しが出てしまいます
リロードすると吹き出しは消えます
画像のみの投稿の時は吹き出しを表示しないようにしたいです
宜しくお願いします
仮説、検証作業は 調べるとcss :not()があるみたいで、それを使おうと思ったのですが、よくわからなかったです
宜しくお願いします
吹き出し scss
.message { margin-top: 60px; &__text { position: relative; border-radius: 10px; display: inline-block; margin: 1.5em 0; padding: 7px 10px; min-width: 120px; max-width: 100%; color: #555; font-size: 16px; background: #f3f6f6; &:before { content: ""; position: absolute; top: -30px; left: 20%; margin-left: -15px; border: 15px solid transparent; border-bottom: 15px solid #f3f6f6; } } }
非同期通信 js
$(document).on('turbolinks:load',function(){ function buildHTML(message){ var img = message.image ? `<img src= ${ message.image }>` : ""; var html = `<div class="message" data-id="${message.id}" > <div class="message__upper-info"> <p class="face"> <p class="message__upper-info__talker"> ${message.user_name} </p> <p class="message__upper-info__date"> ${message.created_at} </p> </div> <p class="message__text"> ${message.content} <div> </div> ${img} </p> </div>` return html ; } $('#new_message').on('submit', function(e){ e.preventDefault(); var formData = new FormData(this); $('#ajax').removeAttr('data-disable-with'); var url = $(this).attr('action') $('#new_message')[0].reset(); $.ajax({ url: url, type: "POST", data: formData, dataType: 'json', processData: false, contentType: false }) .done(function(data){ var html = buildHTML(data); $('.messages').append(html); $(".messages").animate({scrollTop: $(".messages")[0].scrollHeight}); }) .fail(function(){ alert('エラーが発生しています'); }) });
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/13 06:21 編集
2019/12/13 06:25
2019/12/13 06:50
2019/12/13 06:55
2019/12/14 01:42 編集
2019/12/13 08:31