• 締切済み

Javascriptで日付毎のチェックボックスを判断する方法

JAVAで予約できるカレンダーを作成するという課題が学校で出てしまい非常に困っています。 仕様: カレンダー関数により、年・月・日を取得しています。 Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DATE)); int YEAR = cal.get(Calendar.YEAR); int MONTH = cal.get(Calendar.MONTH)+1; int DATE = cal.get(Calendar.DATE); 下記の機能を”Javascript”で実現したいのですが、力不足でどうすることもできません。 実装したい機能: 予約の日付はカレンダー上にある日付毎に設置されたチェックボックスで判断します。予約できる日付は、選択した日付から前後連続した日付けのみ選択可能で、他の日付をまたいで予約することはできないようにする、というものです。 例をあげてみます。 10月10日のチェックボックスを選択したとします。選択した時点で10月の9、10、11日のみチェックボックスにチェックが可能となり、その他はdisabledにします。 次に10月11日のチェックボックスを選択すると、選択した時点で10月の9、12日が選択できるようになります。予約は連続した日付のみ可能ですので、10、11日とその他はdisabledにしなくてはなりません。 どのようなアドバイスでもかまいません。 回答をお願いします。

みんなの回答

回答No.1

>どのようなアドバイスでもかまいません。 と、あるし、「課題」なんだから、ふつうじゃなく、たまには みじかく&なんどくに。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title>極小コードに挑戦!</title> <style type="text/css"> </style> <script type="text/javascript"> var c,y,m,x,b,h,d; with(new Date)c=-new Date(y=getFullYear(),m=getMonth()).getDay(x=new Date(y,++m,0).getDate(b=-1)) h='<form action="#"><table border="1"><caption>'+y+'/'+m+'<tr>'+'日月火水木金土'.replace(/(.)/g,'<th>$1') while((b++>5?b=0:b)|c<x)h+=(b?'':'<tr>')+'<td>'+(++c<1|c>x?'-':c+'<input type="checkbox" name="day">'); document.write(h+'</table><input type="hidden" id="base"></form>'); d=document.getElementsByName('day'); document./*@cc_on @if(1)attachEvent('on'+@else@*/addEventListener(/*@end@*/'click',function(e,o){ o=e./*@if(1)srcElement@else@*/target/*@end@*/;if(o.nodeName=='INPUT'&&o.type=='checkbox')j(o); },false); function j(o){m=c=0;while(y=d[c++]){if(y==o)m=c;y.disabled=true};c=3;while(c--)d[m-c]&&(d[m-c].disabled=false);document.getElementById('base').value=m;} j(d[(new Date).getDate()-1]); </script> checkboxをdisabledにすると、そうしんされるのは、つねに3こに なるのじゃないかな? なので、baseというところに、ひづけもかくようにしたじょ。 がんばれば、もっとみじかくなりそうだけど・・・。 つきはじめと、げつまつのひは、くりこしたりするのか? かれんだーのせいせいは、かこの http://okwave.jp/qa4373884.html をしゃくようしたじょ。ばぶぅ。

amissary
質問者

お礼

回答ありがとうございます。 思ったとおりの動きができるようになりました。 自らの力では時間がかかる一方だったと思います。 ちなみに、月の初めと月末の日は繰越します。 なので実際表示されるカレンダー数は、2つです。

すると、全ての回答が全文表示されます。

関連するQ&A