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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

Q&A

3回答

1259閲覧

プルダウン選択とキーワード検索を連動させたい

pokarisuwett

総合スコア10

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

0グッド

1クリップ

投稿2018/10/18 07:11

編集2018/11/01 09:11

①プルダウンで検索API選択(A、B)後に
②キーワード検索フォームに検索したいワードを入力し
実行ボタンを押すと検索結果に遷移。

例)A選択後⇒キーワード入力 =Aの検索API+入力したワードで検索結果が表示される

といったものを作りたいのですが、①②別々には作成出来たのですが
①+②の結果という連動の仕方がわかりません。。
(アマ〇ンなどで使われている検索フォームみたいなものを作りたく…)

複数の遷移先を切り替える実現方法を教えてください。

<div class="form-select">  <FORM name="form">   <select name="selectSample" id="selectSample"    onChange="if(document.form.selectSample.value){location.href=document.form.selectSample.value;}">    <option value="">選択してください</option>    <option value="Aの検索API">A</option>    <option value="Bの検索API">B</option>   </select>  </FORM> </div>

①は上記の様に、プルダウンで選択すると遷移先に飛ぶ様になっています。

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

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

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

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

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

x_x

2018/10/18 07:26

①ができているならもう完成のように思えるのですが、どこができていないのでしょうか? ①をどう実現したのか書いてもらえますか?
pokarisuwett

2018/10/18 07:41 編集

<div class="form-select">  <FORM name="form">   <select name="selectSample" id="selectSample"  onChange="if(document.form.selectSample.value){location.href=document.form.selectSample.value;}">    <option value="">選択してください</option>    <option value="Aの検索API">A</option>    <option value="Bの検索API">B</option>   </select>  </FORM> </div>
pokarisuwett

2018/10/18 07:42

有難う御座います。①は上記の様に、プルダウンで選択すると遷移先に飛ぶ様になっています。
m.ts10806

2018/10/29 14:45

質問は編集できるので適宜追記してください。とくにコードはコメント欄に書くものではなく、マークダウンが利用できる質問本文に追記するものです。
guest

回答3

0

x_xさんの説明を元に分析をします。

画面遷移の見直し

まず、現状だと画面遷移がlocation.href以下となってしまうので、この部分を外してください。

javascript

1/*onChange="if(document.form.selectSample.value){location.href=document.form.selectSample.value;}"*/

検索値の取得

this.form.actionの値にword=(入力値)を追加します。

javascript

1api_a = 'Aの検索API'; 2api_b = 'Bの検索API'; 3act = this.value === api_a ? api_a : api_b; 4searchword = document.form.word.value; //検索値を取得 5this.form.action = act + "?word=" + searchword; //検索値を紐付ける

と変えるだけです。

するとthis.form.action の値はこのようになるはずです。

(選択された検索APIのURL)?word=(入力値)

イベントの設定

それからプルダウンを操作した際に、formのactionプロパティの値(遷移先+検索値)を設定してやります。

javascript

1document.getElementsByName('api')[0].addEventListener('change', function(event) { 2 api_a = 'Aの検索API'; 3 api_b = 'Bの検索API'; 4 act = this.value === api_a ? api_a : api_b; 5 searchword = document.form.word.value; //検索値を取得 6 this.form.action = act + "?word=" + searchword; //検索値を紐付ける 7}, false);

ここまでくれば、あとはsubmitするだけです。

投稿2018/11/01 11:45

編集2018/11/01 11:51
FKM

総合スコア3633

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

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

0

サーバー側で分岐したほうがいいとは思いますが、一応

HTML

1 <form action="hoge"> 2 <div> 3 <select name="api"><option selected="selected">A</option><option>B</option></select> 4 <input name="keyword" /> 5 <input type="submit" /> 6 </div> 7 </form>

JavaScript

1document.getElementsByName('api')[0].addEventListener('change', function(event) { 2 this.form.action = this.value === 'A' ? 'hoge' : 'foo'; 3}, false);

投稿2018/10/18 08:18

x_x

総合スコア13749

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

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

pokarisuwett

2018/10/19 05:18 編集

ご回答ありがとうございます。上記試してみたのですが、検索結果が下記の様になります https://(現在地のURL)/hoge?api=A&keyword=(入力値) ↓ ※固定のapi(action)+(入力値) ※https://(遷移先URL AorB)search?word=(入力値) という形で結果を表示したいのですが… JavaScript超初心者ですみません。。
x_x

2018/10/19 05:16

検索フォームが提示されていないためでっちあげただけなので適宜変更してください
pokarisuwett

2018/10/19 05:26

<div id="searchBox"> <form action="https://(遷移先URL AorB)search?word=" target="_blank" accept-charset="UTF-8" onfocus="ga();"> <p class="siteSearch"> <input type="text" name="word" class="searchTextBox" placeholder="作品名検索" size="20" onfocus="ga();"> <span onclick="ga();"><input type="image" src="images.gif" alt="検索" onclick="document.charset='UTF-8';" value="検索" name="searchBtn1" id="searchBtn1" onclick="document.charset='UTF-8';" value="検索" onclick="ga();"></span> </p> </form> </div>
x_x

2018/10/19 05:46

keyword を word にするだけですよね? ga()の内容が分からないので重要であれば明らかにしてください。 また、コードはここに書かずに質問文に追記するようにしてください。
FKM

2018/11/01 11:32 編集

横から失礼。 x_xさんの説明で間違ってないですよ。まずは以下の三項演算子で、formのactionメソッドの値(遷移先)を決定させます。 api_a = 'Aの検索API'; api_b = 'Bの検索API' this.form.action = this.value === api_a ? api_a : api_b; と変えるだけです。 それから、現状だと画面遷移がlocation.href以下となってしまうので、この部分を外してください。 /*onChange="if(document.form.selectSample.value){location.href=document.form.selectSample.value;}"*/ そのかわりに、this.form.actionの値にword=(入力値)を追加します。 api_a = 'Aの検索API'; api_b = 'Bの検索API'; act = this.value === api_a ? api_a : api_b; searchword = document.form.word.value; //検索値を取得 this.form.action = act + "?work=" + searchword; //検索値を紐付ける と変えるだけです。 するとthis.form.action の値はこのようになるはずです。 (選択された検索APIのURL)?word=(入力値) あとはプルダウンが onChangeイベントのときに、値をsubmitするだけです
guest

0

考え方は2つ

  • プルダウンも直接入力も単にパラメータなので両方を同じformでそのまま検索
  • プルダウンを選んだ瞬間に専用ページに移動し、そこでキーワードをいれて検索させる

投稿2018/10/18 07:16

yambejp

総合スコア114784

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問