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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

1回答

3722閲覧

サジェスト候補をマウスから選んだときのみに、文字列を追加したい

so_opd

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

0クリップ

投稿2016/09/21 07:45

編集2016/09/21 10:50

###前提・実現したいこと
ユーザがテキストエリアにフルーツの名前を入力すると、サジェスト機能が出てきて、そのサジェスト候補をマウスでクリックすると、その候補と別の文字列を追加する機能を実装しています。

例を挙げますと、ユーザが「みかん」と入力すると、サジェスト候補には、「みかん」「オレンジ」「デコポン」と出てきて、ユーザが「みかん」をマウスでクリックすると、テキストエリアに「みかん」が挿入され、その後ろに「はオレンジ色です」の文字列が追加されるようにしたいです。
※候補がクリックされない限りは何も起きなくてよいです。

サジェスト候補を出し、マウスで候補を選択するとテキストエリアに挿入までは、(おそらく)jQueryのおかけで実装できています。

困っている箇所は、サジェスト候補がマウスによって選ばれたというイベントを検知し、「はオレンジ色です」の文字列を追加するということですので、この点についてアドバイスいただければと思います。

(指摘受け追記1)
サジェスト機能については、配列に候補を格納しており、2文字以上の文字が打ち込まれると発火するようになっています。

###該当のソースコード

//テキストエリアのid = fruit_textareaでお願いします。 //当然ですが、ページがロードされたときしかチェックしませんので、意図した通りの動きではありません。 $(function(){ if ($("#fruit_textarea").val() =='オレンジ色のフルーツ'){ var getData = $("#fruit_textarea").val(); $("#fruit_textarea").val( getData + "はオレンジ色です" ); } });

###試したこと
以下を参考にしましたが、キーベントなので、今回のポイントである「マウスで候補が選ばれた」ときに文字列追加という処理を追加したいです。
http://qiita.com/maruyam-a/items/cf0168f91d934b449a07
https://t87r.wordpress.com/2013/09/10/javascript-%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E5%85%A5%E5%8A%9B%E6%AC%84input-textarea%E3%81%AE%E5%80%A4%E3%82%92%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E3%81%AB%E7%9B%A3/

###補足情報(言語/FW/ツール等のバージョンなど)
jQuery

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

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

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

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

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

kei344

2016/09/21 07:50

サジェストの実装方法次第だと思うのですが、それについてはどのように実装されているのでしょうか。また、URLにはリンクを張ることができますので、編集よろしくお願いします。
kei344

2016/09/21 11:01

実装はコードで示してください。
guest

回答1

0

こんばんはm(_ _)m

key344さんのおっしゃる通りサジェストの実装方法次第な気はしますが、
よくあるjQueryUIのautocomplete機能の場合、closeで候補選択→メニューが閉じるタイミングでイベントが発火します。
ご参考までに。。

Javascript

1$(function(){ 2 var data = [ 3 'みかん', 4 'でこぽん', 5 'オレンジ' 6 ]; 7 $('#fruit_textarea').autocomplete({ 8 source: data, 9 autoFocus: true, 10 delay: 300, 11 minLength: 0, 12 close: function(event, ui) { 13 var text = $(this).val(); 14 if (text !== "") { 15 $(this).val(text + "だよ"); 16 } 17 } 18 }) 19});

HTML

1<textarea id ="fruit_textarea"></textarea> 2→キーで候補表示

投稿2016/09/21 10:56

MaShiRo_H

総合スコア328

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問