
モーダル内に表示させるセレクトボックスで、毎回モーダル起動時ごとに、
セレクトボックス内の初期選択状態を変えたいと思っています。
1回目のモーダル起動時には本日の日付をSELECTEDにし、2回目以降は
前回のモーダル起動時に選択した値をSELECTEDにしたいと思っております。
いろいろな方法があると思うのですが(てっとりばやく、フラグを持たせる
とか、クッキーを使うとか・・・)、正しく実行されず、困っています。
どなたか、よいアドバイスをください。お願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
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は自動的に復元されます。ご健闘を祈ります。
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で飾り立てます。自力で出来ますか? (^^);
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- BTOパソコン OSの入ったHDDがBIOSには認識されるが起動しない 5 2022/04/15 00:47
- 日本株 SBI証券HYPER SBI 2のエラー 1 2023/01/31 13:38
- ドライブ・ストレージ デスクトップパソコンOSについて デスクトップパソコンスペック、Inteli54460 HD4600 3 2023/04/17 01:57
- Windows Me・NT・2000 widows xpのエラーで利用ができなくなりました 3 2022/12/21 13:43
- Windows 10 再起動後 Pinが使用できず、PC(windows11)にサインインできない 3 2022/08/30 20:53
- 据え置き型ゲーム機 どうなの? 1 2023/03/09 20:10
- Windows 10 Windows11タスクバーやエクスプローラー、スタートメニュー 動画全画面時にカーソルが見えない 1 2022/04/08 00:03
- Windows 10 windows11が突然起動しなくなりました 3 2022/06/30 17:49
- デスクトップパソコン デバイスからのHDMI信号がありません 5 2022/05/07 18:08
- Amazon Amazon の ( お急ぎ便 無料 ) は、毎月会費を支払う プライム とかいうような会費制システ 7 2023/05/23 09:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
hiddenのvalueの値を変えたい
-
value.replaceがうまく動作しま...
-
Kintone(キントーン)でドロップ...
-
value内に変数を入れたい
-
大量のselect要素のvalueを短い...
-
eval()を使わずに数値を取得し...
-
ループで連続したフォームの値...
-
セレクトボックスの初期選択状...
-
javascriptでhiddenに二次元配...
-
【続】ダミーフォームの内容を...
-
return trueとreturn falseの用...
-
Selectボックスの幅を自動で広...
-
【jsp/Java】チェックボックス...
-
【javascript・PHP】プルダウン...
-
カーソルが当たった箇所に吹き...
-
ツールチップにテーブル左端列...
-
フォーム内で記入したクエリ送...
-
JSPとJavaScriptの連携について...
-
VBSでブラウザ上のテキストボッ...
-
javaScriptの変数をJavaの変数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
hiddenのvalueの値を変えたい
-
value内に変数を入れたい
-
VB.NET DateTimeの型について
-
複数のsubmitボタンで押された...
-
setIntervalの間隔を途中で変更...
-
javascriptでhiddenに二次元配...
-
チェックボックスがundefinedと...
-
sessionStorageを調べています。
-
Pythonで会員サイトの自動ログ...
-
Web上でexcelの計算ができるよ...
-
フォーカスすると初期値が消去...
-
name属性が同じフォームが複数...
-
ラジオボタンの選択で解答・点...
-
改行の後の空白を削除したい。
-
テキストボックスに入力された...
-
大量のselect要素のvalueを短い...
-
3桁区切りのカンマをつけたい...
-
プルダウン選択時、既に入力済...
-
CDOMailで本文テキストの文字コ...
-
引数に数値、文字列の混在
おすすめ情報