🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Cookie

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

1回答

1622閲覧

jquery.cookie.jsで保存した複数のvalue値を別ページで全て表示させたい

_airi_

総合スコア0

Cookie

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

1クリップ

投稿2021/02/19 00:21

編集2021/02/19 14:29

WordPressのカスタム投稿で350件ほどの商品を登録しています。

single-custom.phpで商品ページにチェックボックスを設け、
jquery.cookie.jsを使用してチェックが付けられたチェックボックスのvalue値をcookieに保存、
それをフォーム画面で表示させたいのですが、私が書いたコードでは何も表示されませんでした。

value値には、single-custom.phpのタイトルが入るようにしています(日本語、英数字、記号が入り乱れ)。
どこがいけなかったのか、教えていただけないでしょうか。

ソースコード

PHP

1【single-custom.php】 2<section> 3 <input type="checkbox" id="checkBox" value="<?php the_title(); ?>" /> 4 <h2><?php the_title(); ?></h2> 5 6~~~中略~~~ 7 8</section> 9 10【フォーム画面】 11<p id="output"></p>

JavaScript

1jQuery(document).ready(function($) { 2var productArr = document.getElementById("checkBox").value; 3 $.cookie('productCheck', productArr, { expires: 100,path:'/'}); 4}); 5 6jQuery('#checkBox').click(function($){ 7 $.cookie("productCheck"); 8}); 9 10jQuery(document).ready(function($) { 11 var productName = $.cookie("productCheck"); 12 document.getElementById('output').insertAdjacentHTML('afterbegin', productName); 13});

補足情報

前提として、jQuery本体はヘッダーで読み込み、jquery.cookie.jsと私が書いたコードはフッターで読み込んでいます。

最初は document.getElementById("checkBox").value; ではなく、document.getElementById("checkBox"); にしていたら、
フォーム画面ではnullと表示されていました。

JavaScriptは初心者で上記のコードもいろいろなサイトを参照して書いたので継ぎはぎだらけだと思いますが、
どなたか教えていただけると幸いです。
どうぞよろしくお願いいたします。

さらに補足

JavaScript

1 2※このコードはjsファイルを作成してフッターで読み込み 3 4jQuery(document).ready(function($) { 5var productArr = document.getElementById("checkBox").value; 6 $.cookie('productCheck', productArr, { expires: 100,path:'/'}); 7}); 8 9$(function() { 10 $('#checkBox').click(function() { 11 var prodName = ($(this).prop("checked") ? $(this).val() : null); 12 $.cookie('productCheck', prodName, {expires:100, path:'/'}); 13 }); 14});

JavaScript

1※このコードは表示させたいページ内に記述 2 3jQuery(document).ready(function($) { 4 var productName = $.cookie("productCheck"); 5 $("#output1").val(productName); 6});

PHP

1【フォーム画面】 2<input type="text" name="output" id="output1" value=""> 3<input type="text" name="output" id="output2" value=""> 4<input type="text" name="output" id="output3" value=""> 5<input type="text" name="output" id="output4" value=""> 6<input type="text" name="output" id="output5" value="">

このように分けたら表示されるようになりました。
また、表示させたい個所をpタグにしていましたが、フォームページのテキストボックス内に表示させたいため、一部修正しました。

本来は複数の値(最大5個)を表示させたいのですが、最後にチェックした値しか表示されません。
あと、テキストボックス1つにつき1つのvalue値を入れたいのですが、それもどうするのかわかりません。

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

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

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

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

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

plasticgrammer

2021/02/19 04:37

チェックが付けられたもののvalueを保存するとのことですが、保存のタイミングはいつですか? jQuery(document).ready、jQuery('#checkBox').click でのコードがありますが、チェックの状態は条件としていないですよね?テストのコードでしょうか?
_airi_

2021/02/19 06:39

保存のタイミングは、チェックボックスをチェックした時です。 > チェックの状態は条件としていないですよね? 確かにそうですね、この条件を書いていませんでした。 この条件を付け加えると、 jQuery('#checkBox').click(function($){ if (checkBox.checked){ $.cookie("productCheck"); } }); このような感じになるのでしょうか?
guest

回答1

0

記載頂いている情報から、下記のようなコードになるイメージです。(動作未検証)

  • document.readyでclickイベントハンドラを登録
  • clickイベントハンドラで、checkされていればvalue値を、されていなければnull値を保存

js

1// document.ready 2$(function() { 3 $('#checkBox').click(function() { 4 var prodName = ($(this).prop("checked") ? $(this).val() : null); 5 $.cookie('productCheck', prodName, {expires:100, path:'/'}); 6 }); 7});

投稿2021/02/19 07:02

plasticgrammer

総合スコア629

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

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

_airi_

2021/02/19 12:18

コードありがとうございます。 早速書き換えてみましたが、結果は変わらずでした。 何がいけないのでしょうか…。 補足ですが、チェックボックスを設置している商品ページと、表示させたいフォームがあるページは別のページです。
_airi_

2021/02/19 13:05

表示させるためのコード jQuery(document).ready(function($) { var productName = $.cookie("productCheck"); document.getElementById('output').insertAdjacentHTML('afterbegin', productName); }); この部分のみjsのファイルから削除し、フォームがあるページに記述したらvalue値が表示されました! ただ、複数のvalue値を表示させたいのですが、最後にチェックしたvalue値しか表示されません。 最大5個くらいは表示できれば良いのですが、コードはどう書けば良いのでしょうか?
plasticgrammer

2021/02/22 02:28 編集

今は #checkBox というセレクタでid属性にて対象を指定していますが、これが複数あるとなるとid属性ではダメです。(そもそも複数の要素に同じIDを付けてはダメ) また。cookieに保存するIDを(productCheck1、productCheck2のように)個別に変えるのであれば楽ですが、同じIDで管理するとした場合は別途色々な制御が必要になるかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問