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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1549閲覧

JavaScript HTMLプルダウンの初期値を固定したい

amaguri

総合スコア227

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/08/31 07:13

編集2017/08/31 07:19

やりたいこと
ページ読み込み時
javascriptで作成した
プルダウンの値を選択されている値で固定したい。

画面の操作として
年月日がプルダウンで表示されており
そのプルダウンを選択し検索を押下すると
getでその年月日のデータを表示するというページです。

問題点として
2017/09プルダウンを選択して検索を押すと
画面は切り替わるのですがプルダウンがデフォルトの現在の(質問日2017/08/31)
2017/08を選んだ状態になってしまします。

プルダウンをphpで作成していたときはうまく動作していたのですが
今回javascrip にてプルダウンのオプションを作成しているので
その場合のプルダウンの固定はどうすればよろしいのでしょうか?

$search_cond['created_at']に
選択した日付データが入っています。

php

1 <?php echo Form::open(array("action" => "","method"=>"get", "id" => "form1"))?> 2 <select name="created_at" id="form_created_at"></select> 3 <?php echo Form::submit("form_submit","検索",array("onclick" => "do_search($club_member->id)")) ?> 4 <?php echo var_dump($search_cond['created_at']) ?> 5 <?php echo Form::close()?>

html

1html化したコード 2<form action="" method="get" id="form1" accept-charset="utf-8"> 3<select name="created_at" id="form_created_at"></select> 4<input onclick="do_search(6)" name="form_submit" value="検索" type="submit" id="form_form_submit" />

js

1 function do_search(id) 2 { 3 $("#form1").attr("action","/hogehoge/"+id) 4 } 5 6var optionYMCreate, this_day, this_month, this_year, today,this_ym; 7 today = new Date(); 8 this_year = today.getFullYear(); 9 this_month = today.getMonth() + 1; 10 this_ym = this_year +'/'+this_month; //今月 11 12 //年月オプションを作る 13 optionYMCreate = function(ystart,yend, id) { //年の範囲と対象のコントロールIDを受け取る 14 var i, opt,m_i,ym,selected_option ; 15 opt = null; 16 for (i = ystart; i <= yend ; i++) { //年のループ 17 for(m_i=1;m_i<=12;m_i++){ //月のループ 18 ym = i +'/'+ m_i; //ループ内の年月 19 selected_option = ''; 20 if (ym === this_ym) { //今年月と一致してたら選択済みとする 21 selected_option = 'selected'; 22 } 23 opt += '<option value="' + ym + '" '+selected_option+'>' + ym + '</option>'; 24 } 25 } 26 return document.getElementById(id).innerHTML = opt; 27 }; 28 29 optionYMCreate(2017, this_year, 'form_created_at');

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

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

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

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

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

guest

回答1

0

ベストアンサー

PHPで検索処理を行うのであればselectのoption自体もPHPで作って、
ボタン押下時のsubmitを受け取り、selectのoptionを作っているところでselectedをつけたほうが良いですね。

javascriptで行いたいのであれば、getでsubmitされているようなので
QueryStringを受け取ってform_created_atのoption構築後にselectの初期値とすると良いです。

投稿2017/08/31 07:24

m.ts10806

総合スコア80850

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

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

amaguri

2017/08/31 07:39

無事解決できました! 記事を読んだところ http://www.pahoo.org/e-soul/webtech/php02/php02-30-01.shtm に ただし、いちいちサーバサイドで計算させることはサーバに負荷がかかるので、この処理は、本来はクライアントサイドで JavaScript で行わせるのが良いだろう。 とありましたので質問させていただきました! いつもありがとうございます!
m.ts10806

2017/08/31 07:57 編集

記事自体もそこそこ古いというが気になりますが、 何千何万とループさせる計算ではないので、速度的な面、負荷的な面からしてもそこまでの負荷とは私は思いません。(PHPも7になって速度も上がりましたし、サーバーの性能も年々良くなっています) 結果的には同じではありますが、submitした情報を取得して検索処理を行うのはPHPであり、あまりあちこちに記述が分散してしまうとメンテナンス性も良くないので、「表示前に検索も含めてサーバー側で出来る限り用事を済ませておく」というやり方もありだとは思います。 javascript,htmlは改ざん可能ですしね。。
amaguri

2017/08/31 07:59

なるほど そうなると いただいコードをjsにて実装し <?php echo Form::select("id",value"",オプション) ?>というふうに実装するのもありということですね!
m.ts10806

2017/08/31 08:20

JSで作ったY/MのセレクトボックスのコードをPHPで作るのでそもそもJSは不要です。 (何かのフレームワークなのであればたぶん機能のままだとY/M形式は難しいかもしれません)
amaguri

2017/08/31 08:21

なるほど。 feulを利用しています。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問