- ベストアンサー
Javascriptを使用して期日に応じてチェックボックスを有効にする方法
- Javascriptの文法を誤っているため、チェックボックスの有効化が正しく機能していないようです。
- チェックボックスの有効化は、document.getElementByIdを使用して行うことができます。指定した要素のdisabled属性をfalseに設定することでチェックボックスを有効にすることができます。
- 期日に応じてチェックボックスを有効にするには、Dateオブジェクトを使用して現在の日付と比較する必要があります。条件を満たす場合にのみ、document.getElementByIdを使用してチェックボックスを有効にすることができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
かいとうがつきませんね? とりあえず、firefox でうごきます ぜんかくくうはくは、はんかくに おきかえしてください ひづけの くぎりが いいかげんだったり。 <!DOCTYPE html> <meta charset="UTF-8"> <title></title> <style> input[type="checkbox"]:disabled + label { color: #aaf; } input[type="checkbox"]:checked + label { border-bottom: 2px red solid; } </style> <form> <input name="希望区域" type="checkbox" value="末広町"><label>末広町</label> <input name="希望区域" type="checkbox" value="緑町"><label>緑町</label> <input name="希望区域" type="checkbox" value="新田町"><label>新田町</label> <input name="希望区域" type="checkbox" value="洋野町"><label>洋野町</label> </form> <script type="application/javascript; version=1.8"> function hashDictionary (a,b) { return b.value ? ((a[b.value] = b), a): a } function toElement (a) { return this.dic[a] } function setDisabled (a) { a.disabled = !!this.disabled } function setState (condition) { var a = condition.date.match (/\d+/g); if (! a) throw new Error; var sDate = +(new Date (a[0], a[1]-1, a[2])); var eDate = +(new Date (a[3], a[4]-1, a[5])); var ary = []; if (sDate <= this.target) { if (this.target <= eDate) { ((condition.item instanceof Array) ? condition.item: [condition.item]) .map (toElement, this) .forEach (setDisabled, condition); } } } var ConditionList = [ { date: '2012-08-05/2012-08-31', item: ['洋野町', '緑町'], disabled: true }, { date: '2012年08月05日/2012年08月31日', item: ['末広町', '新田町'], disabled: false } ]; var checkbox = document.querySelectorAll ('form input[type="checkbox"][name="希望区域"]'); var hash = Array.prototype.reduce.call (checkbox, hashDictionary, new Object); ConditionList.forEach (setState, {dic: hash, target: +(new Date)}); //_________________ document.addEventListener ('click', function (event) { var e = event.target; if ('checkbox' === e.type) alert (e.value + 'を押したね'); }, false); </script>
お礼
こ・・・これは・・・ 私が応用しようとしていたコードをちょっといじったくらいではダメだったんですね。 私の頭ではこれを理解するのにかなり時間がかかりましたが、どういうことなのかおかげさまでわかりました。 ご回答ありがとうございました。