チェックボックスとラジオボタンをクッキーで制御するには

[上に] [前に] [次に]
kisara [E-Mail] 2000/01/26(水) 14:16:42
お世話になります。
下記のようなHTMLを作ったのですが、
うまくいきませんでした。

ラジオボタンとチェックボックスの値をcookieに覚えさせて、
次に開いたときにそれを表示させるようにしたいのですが、
出来ません。

とほほさんのcookie入門では分からず、検索も色々かけてみたのですが、
分かりませんでした。

ご指導のほど宜しくお願い致します。

<html>

<head>
<title>パーソナル表示設定</title>

<script language="JavaScript">
<!--
function loading(){
    target = getCookie("Target");
    category = getCookie("Category");
    select = getCookie("Select");
    document.form1.cookietarget.value = target;
    document.form1.cookiecategory.value = category;
    document.form1.cookieselect.value = select;
}

function cookieinput(){
    setCookie("Target", document.form1.cookietarget.value);
    setCookie("Category", document.form1.cookiecategory.value);
    setCookie("Category", document.form1.select.value);
}

function getCookie(key,  tmp1, tmp2, xx1, xx2, xx3) {
    tmp1 = " " + document.cookie + ";";
    xx1 = xx2 = 0;
    len = tmp1.length;
    while (xx1 < len) {
        xx2 = tmp1.indexOf(";", xx1);
        tmp2 = tmp1.substring(xx1 + 1, xx2);
        xx3 = tmp2.indexOf("=");
        if (tmp2.substring(0, xx3) == key) {
            return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
        }
        xx1 = xx2 + 1;
    }
    return("");
}

function setCookie(key, val, tmp) {
    tmp = key + "=" + escape(val) + "; ";
    tmp += "expires=Fri, 31-Dec-2030 23:59:59; ";
    document.cookie = tmp;
}

// -->
</script>

</head>

<body bgcolor="#e6e6fa" onLoad="loading()">
<table border="0" width="70%">
<tr>
  <td>
<blockquote>
<p>
<h2><font color="#ff0000">※ My X-streamの設定</font></h2>
</p>
</blockquote>
  </td>
</tr>
<tr>
  <td>
<blockquote>
<font color="dd00dd"><h4>以下の設定を行うと、チェックした項目が以降全ての画面の検索条件となりますので、見たい商品情報をより早く検索することが可能になります!</h4>
<ul>
<li>常に全ての情報をご覧になる場合は、以下の項目を選択しないで下さい。<br>
<li>以下の項目を設定した上で、一時的に全ての商品情報をご覧になる場合は、各画面メニューの「全ての商品情報」のボタンで表示の切替えを行うことが可能です。</font>
</ul>
</blockquote>
  </td>
</tr>
</table>

<p>
<blockquote>
<table border="0" width="600" cellspacing="0"cellpadding="5">
  <tr>
<td width="150" bgcolor="#6666ff" colspan="3">
  <form name="form1">
  <input type="radio" name="select" value="0">検索条件とする「商品カテゴリー」の設定
</td>
  </tr>
  <tr bgcolor="ccccff">
<td width="150">
  <input type="checkbox" valu="0" name="cookiecategory">ビデオカメラ<br>
  <input type="checkbox" valu="1" name="cookiecategory">ビデオレコーダー<br>
  <input type="checkbox" valu="2" name="cookiecategory">ビデオ編集機器<br>
  <input type="checkbox" valu="3" name="cookiecategory">デジタルHDVS<br>
  <input type="checkbox" valu="4" name="cookiecategory">送出システム<br>
  <input type="checkbox" valu="5" name="cookiecategory">中継/ライブ<br>
  <input type="checkbox" valu="6" name="cookiecategory">ビデオディスク
</td>
<td width="250">
  <input type="checkbox" valu="7" name="cookiecategory">セキュリティー<br>
  <input type="checkbox" valu="8" name="cookiecategory">モニター<br>
  <input type="checkbox" valu="9" name="cookiecategory">プロジェクター<br>
  <input type="checkbox" valu="10" name="cookiecategory">プリンター/静止画機器<br>
  <input type="checkbox" valu="11" name="cookiecategory">コンピューター関連機器<br>
  <input type="checkbox" valu="12" name="cookiecategory">マイクロフォン<br>
  <input type="checkbox" valu="13" name="cookiecategory">オーディオレコーダー・プレーヤー
</td>
<td width="200">
  <input type="checkbox" valu="14" name="cookiecategory">各種オーディオ機器<br>
  <input type="checkbox" valu="15" name="cookiecategory">教育関連機器<br>
  <input type="checkbox" valu="16" name="cookiecategory">会議/TV会議システム<br>
  <input type="checkbox" valu="17" name="cookiecategory">システム機器<br>
  <input type="checkbox" valu="18" name="cookiecategory">コンピュータソフト<br>
  <input type="checkbox" valu="19" name="cookiecategory">ラック関連<br>
  <input type="checkbox" valu="20" name="cookiecategory">データレコーダー
</td>
  </tr>
</table>
</blockquote>
</p>

<p>
<blockquote>
<table border="0" width="600" cellspacing="0"cellpadding="5">
  <tr>
<td width="150" bgcolor="#6666ff" colspan="3">
  <input type="radio" name="select">検索条件とする「ターゲット業種」の設定
</td>
  </tr>
  <tr bgcolor="ccccff">
<td width="150">
  <input type="checkbox" valu="0" name="cookietarget">製造業<br>
  <input type="checkbox" valu="1" name="cookietarget">金融業
</td>
<td width="250">
  <input type="checkbox" valu="2" name="cookietarget">流通業<br>
  <input type="checkbox" valu="3" name="cookietarget">官公庁
</td>
<td width="200">
  <input type="checkbox" valu="4" name="cookietarget">サービス業<br>
  <input type="checkbox" valu="5" name="cookietarget">大学・教育
</td>
  </tr>
</table>
</blockquote>
</p>
<p>
<input type="submit" value="設定" onClick="cookieinput();window.close()">
</p>
</form>
</body>
</html>

EMI 2000/01/26(水) 14:27:54
チェックボックスの部分をdocument.writeで書き出すようにしたらどうですか?
後、わかってるとは思いますが、valuではなくてvalueです。

kisara 2000/01/26(水) 14:29:07
すみません。いくつか間違ってました。

>function cookieinput(){
>    setCookie("Target", document.form1.cookietarget.value);
>    setCookie("Category", document.form1.cookiecategory.value);
>    setCookie("Category", document.form1.select.value);
>}
の部分のselectは
>setCookie("Select", document.form1.select.value);
でした。
また、各<input>タグ内のvalueのスペルが全部間違ってました。

上記の間違いを直したのですがやはり駄目でした。

ちなみにクッキーもフォームも飲み込んでいない部分が多数あるため、
間違ったタグの使い方をしてしまっているのかもしれません。
出来れば、詳しくご指導いただければと思います。
宜しくお願い致します。

Mugi [E-Mail] [HomePage] 2000/01/26(水) 16:38:36
ラジオを選択させるのは、value=〜じゃないです。
radio[0].selected=true のようにします。
(同じ名前のラジオがひとつの場合は配列扱いにする必要はありません)
checkboxもvalue=〜では設定できません。
checked=true を使います。
僕のホームページにこれに似たフォームの内容をCOOKIEに保存するスクリプトがあります。
よかったら、参考にしてみてください。
25番です。
http://hp.vector.co.jp/authors/VA013453/js/index.htm

[上に] [前に] [次に]