お世話になります。
先日もココで質問させていただいたのですが、
JS初心者の癖に知人に頼まれJSでの処理に手を出し困っています。。。
以下のソースの様なフォームを作成しておりまして、(質問用にCSSを抜いた簡易なソースにしました。)
以下のようにやりたいことが定まっているのですが、
これをJSで書くにはどうして良いのやら。。。わからないのです・・・。
まだまだJSではしたいことを実現するだけの力がなく、
どなたかヒントだけでもいただけないでしょうか・・・?
あわよくば、サンプルコードなんていただけると、なお助かります。。
投稿文章が長くなってしまったため、
2回に分けて投稿します。
それでは、よろしくお願い致します。
---- やりたいこと ------------------------------------------------
hope_collect_dayの値が今日の日付と同じで、AM11:00以前であれば
hope_collect_timeの選択肢として、
13~15時
15~17時
17~21時
を表示。
hope_collect_dayの値が今日の日付と同じで、PM13:00以前であれば
hope_collect_timeの選択肢として、
15~17時
17~21時
を表示。
hope_collect_dayの値が今日の日付と同じで、PM15:00以前であれば
hope_collect_timeの選択肢として、
17~21時
を表示。
hope_collect_dayの値が今日の日付と同じでなかったら、
hope_collect_timeの選択肢として、
~13時
13~15時
15~17時
17~21時
を表示。
------------------------------------------------------------------
No.3ベストアンサー
- 回答日時:
さらにみじかく
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>test</title>
<body>
<form name ="frm1" method="post" action="aaa.php" accept-charset="UTF-8">
<fieldset>
<legend>ご希望日時</legend>
<select name="hope_collect_day" onchange="init(this.value)">
<option value="" selcted="selected">日付を選んで下さい</option>
<option value="0">本日</option>
<option value="1">1日後</option>
<option value="2">2日後</option>
</select>
<select name="hope_collect_time">
<option value="" selcted="selected">時間帯を選んで下さい</option>
<option value="1">~13時</option>
<option value="2">13時~15時</option>
<option value="3">15時~17時</option>
<option value="4">17時~19時</option>
</select>
</fieldset>
<fieldset>
<legend>お渡しご希望日時</legend>
<select name="hope_pass_day">
<option value="" selcted="selected">日付を選んで下さい</option>
<option value="3">3日後</option>
<option value="4">4日後</option>
<option value="5">5日後</option>
</select>
<select name="hope_pass_time">
<option value="" selcted="selected">時間帯を選んで下さい</option>
<option value="1">9時~12時</option>
<option value="2">12時~14時</option>
<option value="3">14時~16時</option>
<option value="4">16時~18時</option>
<option value="5">18時~20時</option>
<option value="6">20時~21時</option>
</select>
</fieldset>
</form>
<script type="text/javascript">
function init(v) {
var o={}, i=0, n=new Date, h=n.getHours(); v-=0;
if(!v){ while (o[i] = n.hizuke(i), ++i < 14); setSelect('hope_collect_day', o)}
o = {}, i = 3; while (o[i] = n.hizuke(i + v), ++i < 17); setSelect('hope_pass_day', o);
o = {'':'時間帯を選んで下さい', 1:'~13時', 2:'13時~15時', 3:'15時~17時', 4:'17時~19時'};
setSelect('hope_collect_time', o, 0, 0, !v * ( (h<11) * 2 + (h<13) +(h<15)));
}
Date.prototype.hizuke = function(n){
var c=new Date(this); n&&c.setHours(n*24);
return c.getFullYear()+'/'+z(c.getMonth()+1)+'/'+z(c.getDate());
function z(s){return s<10?'0'+s:s}
}
function setSelect(n,objs,def,sel,op) {
var e = document.getElementsByName(n)[0] || document.getElementById(n), i, o = e.options, c = op || 0;
o.length = 0; for (i in objs) --c<0 && (o[o.length] = new Option(objs[i], i, def == i, sel == i));
}
init(0);
</script>
No.2
- 回答日時:
う~~ん。
まな~が・・・。phpをつかうりゆうが、わからないので、すくりぷとだけで、かいたじょ!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>test</title>
<body>
<form name ="frm1" method="post" action="aaa.php" accept-charset="UTF-8">
<fieldset>
<legend>ご希望日時</legend>
<select name="hope_collect_day" onchange="init1(this)">
<option value="" selcted="selected">日付を選んで下さい</option>
<option value="0">本日</option>
<option value="1">1日後</option>
<option value="2">2日後</option>
</select>
<select name="hope_collect_time">
<option value="" selcted="selected">時間帯を選んで下さい</option>
<option value="1">~13時</option>
<option value="2">13時~15時</option>
<option value="3">15時~17時</option>
<option value="4">17時~19時</option>
</select>
</fieldset>
<fieldset>
<legend>お渡しご希望日時</legend>
<select name="hope_pass_day">
<option value="" selcted="selected">日付を選んで下さい</option>
<option value="3">3日後</option>
<option value="4">4日後</option>
<option value="5">5日後</option>
</select>
<select name="hope_pass_time">
<option value="" selcted="selected">時間帯を選んで下さい</option>
<option value="1">9時~12時</option>
<option value="2">12時~14時</option>
<option value="3">14時~16時</option>
<option value="4">16時~18時</option>
<option value="5">18時~20時</option>
<option value="6">20時~21時</option>
</select>
</fieldset>
</form>
<script type="text/javascript">
function init () {
var val = [], day = [], now = new Date, cnt;
for (cnt = 0; cnt < 14; cnt ++) {
val.push(cnt);
day.push(now.hizuke(cnt));
}
setSelect('hope_collect_day', day, val, 0, 0);
init1();
}
function init1 () {
var val = [], day = [], now = new Date, cnt, h = now.getHours(), s = 0;
var n = document.getElementsByName('hope_collect_day')[0].value - 0;
for (cnt = 3; cnt < 17; cnt ++) {
val.push(cnt + n);
day.push(now.hizuke(cnt + n));
}
setSelect('hope_pass_day', day, val, 1, 1);
val = ['',1,2,3,4];
tim = ['時間帯を選んで下さい','~13時','13時~15時','15時~17時','17時~19時'];
if (document.getElementsByName('hope_collect_day')[0].value == '0') {
if (h < 11) s = 2; else if (h<13) s = 3; else if (h<15) s = 4;
}
setSelect('hope_collect_time', tim, val, 1, 1, s);
}
Number.prototype.zero = function(n){ return ('00000000000000'+ this).slice(-n); }
Date.prototype.hizuke = function(n){
var c = new Date(this);
if (undefined != n) c.setHours(n * 24);
return c.getFullYear().zero(4)+'/'+(c.getMonth()+1).zero(2)+'/'+c.getDate().zero(2);
}
function setSelect (n, texts, values, default_v, selected_v, op) {
var e = document.getElementsByName(n)[0] || document.getElementById(n), i, t, v;
if (e) {
e.options.length = 0;
for (i = op || 0; i < texts.length; i++) {
t = texts[i];
v = values[i];
e.options[e.options.length] = new Option(t, v, default_v == v, selected_v == v);
}
}
}
init();
</script>
これとは、まったくちがうことなのだけど。
教えてgooで、みると、「このカテゴリで人気のQ&A」のいちらんに
「1つのformで複数のactionを実行できますか?」が、とっぷで
くいこんでくるのはなぜ?とおもうのは、ばぶぅ~だけ?
ということを、かいとうするたびに、つけている。^^;
というか、さいきん、これをかきたいがために、かいとうしている?
No.1
- 回答日時:
質問者のyuko8320です。
以下、質問の続きになります。
---- ここからソース ----------------------------------------------
<?php
//時間帯セット
$hope_time_set = array(
"0"=>"▲時間帯を選んで下さい",
"1"=>"9時~13時",
"2"=>"13時~15時",
"3"=>"15時~17時",
"4"=>"17時~19時"
);
//時間帯セット
$pass_time_set = array(
"0"=>"▲時間帯を選んで下さい",
"1"=>"9時~12時",
"2"=>"12時~14時",
"3"=>"14時~16時",
"4"=>"16時~18時",
"5"=>"18時~20時",
"6"=>"20時~21時"
);
//日付セット
for($a = 0; $a < 14; $a++) {
$timestamp[] = strtotime("+$a day");
}
$collect_day_set = array(
"0"=>"▲日付を選んで下さい",
"1"=>date( 'Y/m/d', $timestamp[0] ) ,
"2"=>date( 'Y/m/d', $timestamp[1] ) ,
"3"=>date( 'Y/m/d', $timestamp[2] ) ,
"4"=>date( 'Y/m/d', $timestamp[3] ) ,
"5"=>date( 'Y/m/d', $timestamp[4] ) ,
"6"=>date( 'Y/m/d', $timestamp[5] ) ,
"7"=>date( 'Y/m/d', $timestamp[6] ) ,
"8"=>date( 'Y/m/d', $timestamp[7] ) ,
"9"=>date( 'Y/m/d', $timestamp[8] ) ,
"10"=>date( 'Y/m/d', $timestamp[9] ) ,
"11"=>date( 'Y/m/d', $timestamp[10] ) ,
"12"=>date( 'Y/m/d', $timestamp[11] ) ,
"13"=>date( 'Y/m/d', $timestamp[12] ) ,
"14"=>date( 'Y/m/d', $timestamp[13] )
);
//お渡し日付セット
for($a = 3; $a < 17; $a++) {
$timestamp2[] = strtotime("+$a day");
}
$pass_day_set = array(
"0"=>"▲日付を選んで下さい",
"1"=>date( 'Y/m/d', $timestamp2[0] ) ,
"2"=>date( 'Y/m/d', $timestamp2[1] ) ,
"3"=>date( 'Y/m/d', $timestamp2[2] ) ,
"4"=>date( 'Y/m/d', $timestamp2[3] ) ,
"5"=>date( 'Y/m/d', $timestamp2[4] ) ,
"6"=>date( 'Y/m/d', $timestamp2[5] ) ,
"7"=>date( 'Y/m/d', $timestamp2[6] ) ,
"8"=>date( 'Y/m/d', $timestamp2[7] ) ,
"9"=>date( 'Y/m/d', $timestamp2[8] ) ,
"10"=>date( 'Y/m/d', $timestamp2[9] ) ,
"11"=>date( 'Y/m/d', $timestamp2[10] ) ,
"12"=>date( 'Y/m/d', $timestamp2[11] ) ,
"13"=>date( 'Y/m/d', $timestamp2[12] ) ,
"14"=>date( 'Y/m/d', $timestamp2[13] )
);
?>
<!-- HTMLスタート -->
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<script type="text/javascript" language="JavaScript" src="js/jquery.js"></script>
<!-- 集荷希望日とお届け希望日のJS連動処理 -->
<script type="text/javascript">
window.onload = function(){ set(); }
function set() {
var elm = document.forms['frm1'].elements['hope_collect_day'];
var e = document.forms['frm1'].elements['hope_pass_day'];
var i = 0, d, txt, v = elm.value=='▲日付を選んで下さい'?null:elm.value;
e.options.length = 0, e.disabled = true;
if (v) {
while (i<14) {
d = new Date(v); d.setHours(24*i+72);
txt = d.getFullYear() + '/' + (d.getMonth()+1) + '/' + d.getDate();
e.options[i++] = new Option(txt,txt);
}
e.disabled = false;
}
}
</script>
</head>
<body>
<div>
<form name ="frm1" method="post" action="aaa.php" accept-charset="UTF-8">
<table>
<tr>
<td>
<dl>
<dt>ご希望日時</dt>
<dd style="margin-left:150px;">
<p>
<select name="hope_collect_day" style="margin-right: 50px" onchange="set();">
<!-- ご希望日の選択肢を吐き出す部分 -->
<?php foreach ($collect_day_set as $key => $value): ?>
<option value="<?php echo $value; ?>"><?php echo $value; ?></option>
<?php endforeach; ?>
</select>
<select name="hope_collect_time">
<!-- 希望日時の選択肢を吐き出す部分 -->
<?php foreach ($hope_time_set as $key => $value): ?>
<option value="<?php echo $value; ?>"><?php echo $value; ?></option>
<?php endforeach; ?>
</select>
</p>
</dd>
</dl>
</td>
</tr>
<tr>
<td>
<dl>
<dt>お渡しご希望日時</dt>
<dd style="margin-left:150px;">
<p>
<select name="hope_pass_day" style="margin-right:50px; width:150px">
<!-- お渡し希望日の選択肢を吐き出す部分 -->
<?php foreach ($pass_day_set as $key => $value): ?>
<option value="<?php echo $value; ?>"><?php echo $value; ?></option>
<?php endforeach; ?>
</select>
<select name="hope_pass_time">
<!-- お渡し希望日時の選択肢を吐き出す部分 -->
<?php foreach ($pass_time_set as $key => $value): ?>
<option value="<?php echo $value; ?>"><?php echo $value; ?></option>
<?php endforeach; ?>
</select>
</p>
</dd>
</dl>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</div>
</body>
</html>
------------------------------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
selectで選ばれた値を別ページ...
-
全てのselect要素をデフォルト...
-
セレクトボックスの連動処理に...
-
javascriptについて
-
動的にtextareaとselectを追加...
-
hiddenに値を設定する方法
-
複数のプルダウンメニューの組...
-
プルダウンメニューのvalue値取...
-
計算された値をselectboxにsele...
-
Javascriptの"return "について
-
shiftキーを押しながらコマンド...
-
クリックさせたいが、click()が...
-
innerHTML内では改行は禁止?
-
ホームページにタイマーと訪問...
-
jsで、配列内の文章を改行する...
-
2次元配列で2項目についてソー...
-
ボタン押下すると一行テキスト...
-
ハイパーリンクを別ウインドウ...
-
チェックボックスのチェック結...
-
<iframe>内にHTMLをランダム表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Selectボックスの一覧表示方法
-
javascriptでセレクトボックス...
-
プルダウン選択を変更すると、...
-
全てのselect要素をデフォルト...
-
selectを変更不可にしたい
-
<input>の選択肢をプルダウンメ...
-
VBScriptでHTMLのセレクトボッ...
-
スマホのフォームでのselect複...
-
複数のプルダウンを1つにまとめ...
-
selectが変更されたらnameを指...
-
select要素のvalueを配列で取得...
-
同じ名前のセレクトがある場合...
-
javascript:データを日本語で...
-
ラジオボタンとプルダウンを連...
-
selectボックスの選択結果を変...
-
プルダウンの値によって活性・...
-
<select> をmultiple にしてい...
-
連動プルダウンのclonenode
-
リストボックス内の重複したも...
-
selectのすべての値を送信する方法
おすすめ情報