質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

0回答

993閲覧

JQuery iOS 予測変換で重なるのを防ぐ

Kon0829

総合スコア11

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/06/08 12:10

前提・実現したいこと

チャット機能を実装するWEBアプリケーションを作成しています。
Textareaにメッセージを入力する際、iOSの予測変換機能で入力エリアが隠れてしまいます。

textareaにフォーカスがあれば、marginを追加して、「送信」ボタンを押せば、marginをもとに戻すという処理を入れてみましたが、どうも見た目がきれいではありません。

  1. 予測変換が出てきたとき、自動的に高さを変えるような処理はありますでしょうか。
  2. iOSキーボードの右上に「完了」ボタンを押したときの処理をいれたいのですが、トリガーがわかりません。方法ありあすでしょうか。

該当のソースコード

$(function() { // 画面読み込み時にchatをすべて追加 $.each(gon.chats,function(index,chat){ addChat(chat['speaker'], chat['body'], chat['created_at']) }); //スクロールを一番下に $('#chatBlock').css('margin-bottom','150px'); var a = document.documentElement; var y = a.scrollHeight - a.clientHeight; window.scroll(0, y+100); $("input.speak").on('click', function(e) { if(!$("#speak-contents").val()){ return; } var speak_contents = $("#speak-contents").val() var temp_id = addChat('Staff', speak_contents, null, true) App.chat.speak($(e.currentTarget).data("id"), $("#speak-contents").val(), temp_id) $("#speak-contents").val('') $("textarea#speak-contents").height(30);//init $('#contentsFooter').css('padding-bottom','0'); //paddingをもとに戻す }) //入力量に応じてテキストエリアの大きさ変更 $("textarea#speak-contents").height(30);//init $("textarea#speak-contents").css("lineHeight","20px");//init $("textarea#speak-contents").on("input",function(evt){ if(evt.target.scrollHeight > evt.target.offsetHeight){ $(evt.target).height(evt.target.scrollHeight); }else{ var lineHeight = Number($(evt.target).css("lineHeight").split("px")[0]); while (true){ $(evt.target).height($(evt.target).height() - lineHeight); if(evt.target.scrollHeight > evt.target.offsetHeight){ $(evt.target).height(evt.target.scrollHeight); break; } } } }); }); function addChat(speaker,body,created_at=null, temp=false, temp_id=null) { if(temp_id){ $(`.kaiwa[data-temp=\"${temp_id}\"]`).remove(); } return addChatTemplate(speaker, body, created_at, temp) } function removeChatTemplate(speaker, body, created_at, temp) { $("#position").remove(); } function addChatTemplate(speaker, body, created_at, temp) { var content = $('#chatTemplate')[0].content var clone = document.importNode(content, true); var body_element = clone.querySelector('#body') var created_at_element = clone.querySelector('#created_at') var position_element = clone.querySelector('#position') var fragment = document.createDocumentFragment() body_element.innerText = body created_at_element.textContent = created_at if(speaker == 'Restaurant'){ $(position_element).addClass('kaiwa-text-left') }else if(speaker == 'Staff'){ $(position_element).addClass('kaiwa-text-right') } var temp_id = '' if(temp){ temp_id = Math.random().toString(36).slice(-8); $(position_element).attr('data-temp', temp_id); $(position_element).addClass('sending') } fragment.appendChild(clone); document.querySelector('#chatBlock').appendChild(fragment); return temp_id } function scrolldown(){ var a = document.documentElement; var y = a.scrollHeight - a.clientHeight; window.scroll(0, y+90); } //テキストエリアにフォーカスがあったときの処理 $(document).on("click", "textarea", function(){ $('#contentsFooter').css('padding-bottom','25px'); });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問