質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1534閲覧

cookieで選択したラジオボタンを保存したい

nyaaa6

総合スコア21

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/10/24 01:53

編集2019/10/24 02:05

ラジオボタンを選択し「設定」リンクを押すと、リンクを押す前に選択したラジオボタンが選択されている状態にしたいです。ご教授お願いします。

html

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 </head> 7 <body> 8 <input type="radio" value="" name="radio" checked><label>a</label> 9 <input type="radio" value="" name="radio"><label>b</label> 10 <input type="radio" value="" name="radio"><label>c</label><br> 11 12 <a href="#">設定</a> 13 </body> 14</html> 15

以下が試したコードです。

html

1<?php 2 setcookie("a","checked",time()+1000); 3 setcookie("b","checked",time()+1000); 4 setcookie("c","checked",time()+1000); 5?> 6<!DOCTYPE html> 7<html> 8 <head> 9 <meta charset="utf-8"> 10 <title></title> 11 </head> 12 <body> 13 <input type="radio" value="" name="radio" checked><label>a</label> 14 <input type="radio" value="" name="radio" <?=$_COOKIE["b"] ?>><label>b</label> 15 <input type="radio" value="" name="radio" <?=$_COOKIE["c"] ?>><label>c</label><br> 16 17 <a href="#">設定</a> 18 </body> 19</html> 20

デフォルトではaが選択され、その後bを選択し「設定」を押すと再度このページが表示されbが選択されている、というようにしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/10/24 01:57

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
yambejp

2019/10/24 01:59

> リンクを押す前に選択したラジオボタンが選択 ・デフォルト値にしたいのでしょうか? ・クッキーで保存した値にしたいのでしょうか?  (クッキーへの保存はどのタイミングでするのでしょうか?)
nyaaa6

2019/10/24 02:07

kei344さん ご指摘ありがとうございます。追記しました。 何がどのようにわからないのか →「設定する」リンクを押すごとにページが更新され、選択されているラジオボタンを変化させたいのですが、どのようにすれば、選択肢毎に「checked」をinputタグに渡せるのかが、わかりません。
nyaaa6

2019/10/24 02:08

yambejpさん 設定するを押したタイミングでクッキーへ保存をしたいです。デフォルトの選択肢はaのみで、その後bを選び設定を押すと、bのみが選択されている状態にしたいです。
yambejp

2019/10/24 02:16

追記いただいたソースを見る限り同じnameのラジオボタンに すべてcheckedをつける処理が書いてあるように見えます それをするならチェックボックスでやるべきでは? 単純にデフォルトがAで設定を押すたびにクッキーに保存され 次回からそれがデフォルトになる処理ということですかね? クッキーの設定はjs、ラジオボタンのデフォルト選択はphpでよいですか?
nyaaa6

2019/10/24 02:21

>同じnameのラジオボタンにすべてcheckedをつける処理が書いてあるように見えますそれをするならチェックボックスでやるべきでは? 一つずつしか選択できないようにする為にラジオボタンにしていました。 >単純にデフォルトがAで設定を押すたびにクッキーに保存され次回からそれがデフォルトになる処理 その通りです。 >クッキーの設定はjs、ラジオボタンのデフォルト選択はphpでよいですか? はい。
guest

回答1

0

ベストアンサー

jsのクッキー処理がちょっと雑ですがこう

PHP

1<?php 2$checked=["a"=>"","b"=>"","c"=>""]; 3$checked[isset($_COOKIE["r"])?$_COOKIE["r"]:"a"]=" checked"; 4?> 5<script> 6window.addEventListener('DOMContentLoaded', ()=>{ 7 document.querySelector('[name=r][checked]').checked=true; 8 document.querySelector('#set').addEventListener('click',e=>{ 9 e.preventDefault(); 10 var r=document.querySelector('[name=r]:checked'); 11 document.cookie="r="+r.value; 12 }); 13 document.querySelector('#reload').addEventListener('click',e=>{ 14 e.preventDefault(); 15 location.reload(); 16 }); 17}); 18</script> 19<label><input type="radio" value="a" name="r"<?=$checked["a"];?>>a</label> 20<label><input type="radio" value="b" name="r"<?=$checked["b"];?>>b</label> 21<label><input type="radio" value="c" name="r"<?=$checked["c"];?>>c</label><br> 22<a href="#" id="set">設定</a> 23<a href="#" id="reload">リロード</a>

投稿2019/10/24 03:26

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2019/10/24 03:30

jsでクッキーを真面目にやる場合、get/set/del/contains/list 的な処理が必要になります 面倒な場合はjquery.cookie.jsなど利用してください
nyaaa6

2019/10/24 05:03

実現したいことが出来助かりました。中身を理解して参考にさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問