• 締切済み

セレクトボックスの初期選択状態(SELECTED)を動的にしたいのですが

モーダル内に表示させるセレクトボックスで、毎回モーダル起動時ごとに、 セレクトボックス内の初期選択状態を変えたいと思っています。 1回目のモーダル起動時には本日の日付をSELECTEDにし、2回目以降は 前回のモーダル起動時に選択した値をSELECTEDにしたいと思っております。 いろいろな方法があると思うのですが(てっとりばやく、フラグを持たせる とか、クッキーを使うとか・・・)、正しく実行されず、困っています。 どなたか、よいアドバイスをください。お願いいたします。

みんなの回答

  • Ujiki
  • ベストアンサー率37% (38/101)
回答No.3

 『補足』『お礼』への発言がありませんので、一方通行ですので、大変心配しております。(^^)  どうやら、解決したのですね。SELECTEDをクッキーで制御したい点に付いては、回答していませんでしたので、追加しておきます。ここでは例として回答します。(^^);  SELECTでブラウザーの表示サイズを変更し、変更されたサイズをクッキー登録し、再度表示された場合にクッキー値があれば、SELECTEDを埋め込みます。(クッキー登録が無い場合、つまり最初の訪問とクッキー期限切れの時)は全画面表示します。クッキーの登録と呼び出しのfunctionは以下で答えています。 -------------------- <script language="JavaScript"><!-- function resize_x(that){ size_x = that.options[that.selectedIndex].value; redisp(size_x); SaveCookie('wd',size_x); } function redisp(size_x){ if( size_x < screen.availWidth && size_x > 0){ position_x = ( screen.availWidth - size_x ) / 2 ; self.resizeTo( size_x,screen.availHeight); self.moveTo(position_x,0); }else{ self.moveTo(0,0); self.resizeTo(screen.availWidth,screen.availHeight); } } wd = (LoadCookie('wd')!=null)? LoadCookie('wd'):'0' ; redisp(wd); // -->You need Java Script Runtime Processor ! </script> -------------------- 以上をHEAD内にでも登録します。 後はBODY中に -------------------- <table><form><tr><td> <select name=fix_size onChange="resize_x(this)"> <script language="JavaScript"><!-- document.write('<option value=640'); if(wd==640) document.write(' selected'); document.write('>640\n'); document.write('<option value=800'); if(wd==800) document.write(' selected'); document.write('>800\n'); document.write('<option value=1024'); if(wd==1024) document.write(' selected'); document.write('>1024\n'); document.write('<option value=0'); if(wd==0) document.write(' selected'); document.write('>full\n'); // --> </script> </select> </td></tr></form></table> -------------------- でご希望のSELECTEDは自動的に復元されます。ご健闘を祈ります。

  • Ujiki
  • ベストアンサー率37% (38/101)
回答No.2

 まず、動的に強制的にクッキーへの書き出しを行いましょう。クッキーへの登録と、読み出し用の JavaScript 関数を以下のようにします。(^^)  当方で利用中の書式です。(^^) <script language=javascript> <!-- function getFront(mainStr,searchStr) {foundOffset=mainStr.indexOf(searchStr); if (foundOffset==-1){ return null }; return mainStr.substring(0,foundOffset); }; function getEnd(mainStr,searchStr) {foundOffset=mainStr.indexOf(searchStr); if(foundOffset==-1){ return null }; return mainStr.substring(foundOffset+searchStr.length,mainStr.length); } function LoadCookie(name) {var str=getEnd(document.cookie,name+"="); if(str!=null){var tmp=getFront(str,";"); if(tmp!=null){ str=unescape(tmp) } else{ str=unescape(str) }; }; return str; } function SaveCookie(name,value) {var expires = new Date(); //このクッキーの賞味期限は1週間です。 expires.setTime(expires.getTime() + (7*24*60*60*1000)); document.cookie=name+"="+escape(value)+"; expires="+expires.toGMTString(); }; // --> Error ! (^^); </script> 以上が汎用のクッキーへの書き出しと、読み込みの関数です。ASCIIデーターであればエスケープ文字列へのエンコード・デコード処理は無用ですね。日本語を扱いたい場合は必要ですね。 SaveCookie(name,value) を任意に実行すればリアルタイムにクッキーへの書き込みを行います。この例では1週間保持されます。適当に有効時間を調整しましょう。 LoadCookie(name) で、text name に登録されたクッキーを受け取ります。 abc = (LoadCookie('Count')!=null)? LoadCookie('Count'):'1' ; などで呼び出します。クッキー名「 Count 」が登録されていなければ、文字データー「 1 」を変数「 abc 」に返します。  クッキー登録が理解できたら、SELECT 廻りをJavaScriptで飾り立てます。自力で出来ますか? (^^);

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.1

ようするに、モーダルウィンドウの初期起動状態の保持方法ですか? 簡単に作ってみたのですが、参考になるかどうかわかりませんが試してみてください。 以下のソースをファイルに貼り付けて実行してください。 注意:このサンプルは、モーダルを起動する画面が閉じられると、状態は初期の状態に戻ります。状態をずっと保持しておきたいなら、クッキーを使ったほうがいいと思います。 ☆サンプル file:a.htm ****************************************************************** <form name="test"> <input type="hidden" name="idx" value="1"> <input type="button" name="open" value="開く" onclick="window.open('b.htm', 'modal')"> </form> ****************************************************************** file:b.htm ****************************************************************** <script language="javascript"> <!-- function openInfo() { var no; no = opener.document.test.idx.value; document.test2.hiduke[no].checked = true; } function setInfo(iIdx) { opener.document.test.idx.value = iIdx; } //--> </script> <form name="test2"> <input type="radio" name="hiduke" onclick="setInfo('0')">前日<br> <input type="radio" name="hiduke" onclick="setInfo('1')">当日<br> <input type="radio" name="hiduke" onclick="setInfo('2')">明日<br> </form> <script language="javascript"> <!-- openInfo(); //--> </script> ******************************************************************

関連するQ&A

  • セレクトボックスのselected属性の値について

    プログラミング初心者です。 セレクトボックスのselected属性で、<option selected>か、<option selected="selected">で選択済みになりますが、<option selected="???">の???に入る値は「selected」しかないのでしょうか? 例えば、<option selected="false">みたいな感じで、selected属性を書いておいて選択済みにしないということはできないでしょうか。 回答よろしくお願いします。

    • ベストアンサー
    • HTML
  • セレクトボックスの初期選択と選択保持

    セレクトボックスで選択した日付でカレンダーの検索を行いたいです。 起動したときは当日日付を表示させ、検索後は選択した日付をそのまま表示させておきたいのですがうまくいきません。 javascriptを使用するのではないかと思うのですが、初心者のため記述の仕方がよくわかりません。 どなたかご教授いただけるとうれしいです。よろしくおねがいします。

  • プルダウンを選択していないときは、初期値(selected)の値を、選

    プルダウンを選択していないときは、初期値(selected)の値を、選択したときは選択値を、hiddenで渡したい。 ▽プルダウン例 <form> <select> <option value="0" selected>A</option> <option value="4">B</option> <option value="6">C</option> </select> </form> ↑上で選択した値(A or B or C)値を、↓下のvalue=「"hoge"」に渡したいです。 ※選択肢は3つだけではなくて、たくさんあります。 ▽input例 <input name="category_name" value="hoge" type="hidden"> ※formとかselectにid振っても構いません。 ※javascriptでやりたいです。

  • 複数の連動する同じ内容のセレクトボックスについて

    こんばんわ。 よろしくお願いします。 複数の同じ内容のセレクトボックスが連動するモノを作りたいのですが、まったく解りません。 たとえば 初期値を『選択しない』とし、1~5までの値を選択出来るセレクトボックスが5つあるとします。 1つ目のセレクトボックスで『3』を選択したら、残りのセレクトボックスでは3を除いた1~5までの値を選択出来ます。 さらに2つ目のセレクトボックスで『2』を選択したら、残りのセレクトボックスでは2と3を除いた1~5までの値を選択出来きるといった、全てのセレクトボックスが連動した重複を許さないセレクトボックスを作りたいのですが、可能でしょうか?

  • PHPのセレクトボックスの初期値について

    phpのセレクトボックスの値を配列で指定したのですが初期値の表示がうまくいきません。 以下は現在のソースです。 $start_time[$j]はDBの取得値で取得配列と表示配列が一致するものを初期表示する というコードが以下になります $time_array = array( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" ); for( $a=0; $a < count( $time_array ); $a++){ $selectedStartTime =($time_array[$a] == $start_time[$j])?" selected":""; $startTimeSelectBox .= "\t<option value=\"{$time_array[$a]}\"{$selectedStartTime}>{$time_array[$a]}</option>\n"; } 疑問点ですが別条件で(たとえば$start_time[$j]にデータが0の時)配列の指定した値を選択したいです。 下記のようにそれぞれのvalue値の時に条件を指定すればできるのですが配列の時には どのように初期値を設定すればいいかわかりません。        <option value="0" <?php if($start_time[$j] == "0") { echo "selected"; } ?>> 0 <option value="1" <?php if($start_time[$j] == "1") { echo "selected"; } ?>> 1</option> <option value="2" <?php if($start_time[$j] == "2") { echo "selected"; } ?>> 2</option>         ・         ・         ・         ・ 条件を指定したときに初期値を設定したいです。どのように実装すればいいでしょうか。 よろしくいお願いします。

    • ベストアンサー
    • PHP
  • 2つのセレクトボックスで選ばれた結果をショッピングカートに渡したい

    同一ページ内に次の様な2つのセレクトボックスが有ります。 それぞれ選択された内容を足してショッピングカートに送りたいのですがどうしたら良いのでしょうか? セレクトボックス1 <option value="aaa">aaa</option> <option value="bbb">bbb</option> <option value="ccc" selected="selected">ccc</option> セレクトボックス2 <option value="100">100</option> <option value="200">200</option> <option value="300" selected="selected">300</option> ●セレクトボックス1→aaaを選択  セレクトボックス2→100を選択  ショッピングカートには「aaa100」で渡す ●セレクトボックス1→cccを選択  セレクトボックス2→200を選択  ショッピングカートには「ccc200」で渡す 全くの初心者ですがよろしくお願いします。

  • セレクトボックスの初期選択をクッキーで固定したい。

    お世話になります。 php とmysql 初心者です。 php でmysqlから以下のようなセレクトボックスを作りました。 このセレクトボックスの初期値を(selected)を 見る人によって$cookie値によって固定したいのですが いろいろググったりしたのですが、 見当もつかず理屈から全くわかりません。 phpだけでできるのでしょうか? javascript等必要でしたら できれば具体的に教えて頂ければ大変助かります。 どうかご教授の程よろしくお願い致します。 <? $sql = "SELECT * FROM table ORDER BY index ASC"; $res = mysql_query( $sql ); $options=""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ if($cookie==$row['index']){ $options.="<option value='{$row['index']}'selected>{$row['name']}</option>\n";} else { $options.="<option value='{$row['index']}'>{$row['name']}</option>\n";} } $select="<select name='name'><option value=''>選択</option>\n{$options}</select>\n"; print $select; ?>

    • 締切済み
    • PHP
  • セレクトボックスの選択状態について

    セレクトボックスの横にチェックボックスがあり、 チェックボックスON→セレクトボックスはAの内容 チェックボックスOFF→セレクトボックスはBの内容 となるものがあります。 問題は、これに値を保持する機能を付けたいのです。 例えば、チェックボックスにチェックがある状態でセレクトボックスの3番目の要素を選択していたとします。そこで、チェックをはずし一度Bの内容を表示させてから、再度チェックを付けAの内容に戻した時に3番目の要素が選択されている状態にしたいです。逆の場合も同様にしたいです。アドバイスを頂けたらと思います。宜しくお願い致します。 <script type="text/javascript"> <!-- a = 0; b = 0; txt = {}; txt["A"] = new Array("設定なし","A1","A2"); txt["B"] = new Array("設定なし","B1","B2","B3"); function set(select_box,check_box){ if (document.forms[0].elements[check_box].checked) { key = "A"; b = document.forms[0].elements[select_box].options.selectedIndex; } else { key = "B"; a = document.forms[0].elements[select_box].options.selectedIndex; } while (document.forms[0].elements[select_box].options[0]){ document.forms[0].elements[select_box].options[0] = null; // セレクトボックスのメニューを消去 } for (i=0; i<txt[key].length; i++){ document.forms[0].elements[select_box].options[i] = new Option(txt[key][i],txt[key][i]); // セレクトボックスのメニューの項目を生成・表示テキストとvalue値を設定 } if (key = "A") { document.forms[0].elements[select_box].options.selectedIndex = a; } else if (key = "B") { document.forms[0].elements[select_box].options.selectedIndex = b; } } // --> </script>

  • セレクトボックスの選択項目を変える

    セレクトボックスの選択項目を変えるには どうすればいいですか? <FORM action=./ method=post> <SELECT name=server> <OPTION value=2 selected>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> </SELECT> </FORM> こういうフォーム(FORMやOPTIONにnameがない)で [4]を選択したいです このフォームを書き換えないで(スクリプトでの書き換えなら○) どうにか変えることはできないでしょうか? IEのみの対応でいいので、お願いします

  • 動的セレクトボックスのSelectedについて

    以下のように、動的セレクトボックスを作りました。これ自体は問題なく動くのですが、selectedの指定方法がわかりません。例えば、ページ表示に「東京都」と「中央区」を選択している状態にしたいです。よろしくお願いいたします。 <html> <head> <script type="text/javascript"><!-- function SelectOption(parentValue, text, title, value, style) { this.parentValue = parentValue; this.setOption = function() { this.text = text; this.value = value; this.title = title; if(style) { this.style.cssText = style; } }; return this; } function SelectBox(id) { function getObject() { var obj = document.getElementById(id); if(!obj.options && ( (typeof obj.length) == "number") ) { if(obj.length > 0) { obj = obj[0]; } else { obj = null; } } return obj; } var options = []; this.registOption = function(option) { options[options.length] = option; }; var child = null; this.setChild = function(childObj) { child = childObj; }; this.make = function(parentValue) { var obj = getObject(); if(obj) { obj.options.length = 0; var opt = (parentValue != null) ? [] : options; if(parentValue != null) { for(var i = 0; i < options.length; i++) { if( (options[i].parentValue == null) || (options[i].parentValue == parentValue) ) { opt[opt.length] = options[i]; } } } obj.options.length = opt.length; for(var i = 0; i < opt.length; i++) { opt[i].setOption.call(obj.options[i]); } if(child) { child.make(obj.value); } } }; return this; } var box1 = new SelectBox("sb1"); box1.registOption(new SelectOption(null, "都道府県", "", "0", "color:gray;")); box1.registOption(new SelectOption(null, "東京都" , "都道府県", "1")); box1.registOption(new SelectOption(null, "神奈川県", "都道府県", "2")); var box2 = new SelectBox("sb2"); box2.registOption(new SelectOption(null, "区市町村", "", "0", "color:gray;")); box2.registOption(new SelectOption("1" , "千代田区", "区市町村", "1")); box2.registOption(new SelectOption("1" , "中央区" , "区市町村", "2")); box1.setChild(box2); window.onload = function() { box2.make("1"); }; //--></script> </head> <body> <form> <select id="sb1" onchange="box2.make(this.value);"></select> <select id="sb2"></select> </select> </form> </body> </html>

専門家に質問してみよう