質問: ### 前提・実現したいこと JQueryと ruby on rails を使って、チャット型の入力フォームを作成しています。 下記のように、特に平仮名や句点(。)等、未変換の状態でhideメソッドを実行しても、 showメソッドで再表示した際に入力内容を消さないように実装したいと考えています。 ### 発生している問題・エラーメッセージ 画像のように、一部の文字の背景が青色(未変換の状態)で「非表示」を押下してhideメソッドで非表示とすると、 「再表示」を押下してinputタグを再表示させた際に入力内容が全て(変換確定していた部分も含めて)消えてしまう。 ![](https://teratail.storage.googleapis.com/uploads/contributed_images/afc8f6f3e5223d28511fa6b1ead513cd.png) ### 該当のソースコード ``` <%= form_for([@hoge, @fuga]) do |f| %> <%= f.text_field :hoge, {id: "text-hoge"} %> <% end %> ``` ``` function hide_click() { $('.input').hide(); } function show_click() { $('.input').show(); } ``` ### 試したこと 「非表示」ボタンを押下した際に、自動でenterキー(iphoneで言えば「確定」キー)を押下した際と同様の挙動をさせることができれば解決するのでしょうか? よろしくお願いいたします。 ### 補足 iPhone7, Safariで検証しています。
回答: > > 「非表示」ボタンを押下した際に、自動でenterキー(iphoneで言えば「確定」キー)を押下した際と同様の挙動をさせることができれば > > > ボタン押下時だと既に未確定のテキストは無効化されているので OnKeyUpイベントを監視するしかないかなと。 一応、下記のようにすると「未確定文字を保持してshow()時に復帰」みたいなことはできますが、 あくまで未確定であっても関係なく自動的に確定したものとして扱うだけなので「未確定を未確定状態で復帰」というのは難しそうです。 ``` var iValue = ""; $(function(){ $("input#text-hoge").on("keyup",function(){ iValue = $("input#text-hoge").val(); }); }); function hide_click() { $('.input').hide(); } function show_click() { $("input#text-hoge").val(iValue); $('.input').show(); } ```