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

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

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

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

HTML

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

Q&A

解決済

2回答

43302閲覧

inputタグのvalue属性に2つの値を持たせて、チェックされたらその2つの値をそれぞれ別の箇所に渡したいのですができません。

ShunYoshizawa

総合スコア103

jQuery

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

HTML

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

0グッド

1クリップ

投稿2017/05/29 05:30

現在申し込むフォームを作成していて、
イベントの開催日が2日程ありまして、
日付(inputタグのradioボタン)をチェックするとそのチェックされたvalueの値(2つとも)を
違うinputのvalue属性にそれぞれ引き渡すということがしたいのですが、よく分かりません。
また、value属性を2つ入れるやり方も分かりません。
1つだけならvalue属性のデータを引き渡せるのですが、2つになったので全然分かりません。

こちらがデータを引き渡す側のHTMLです。(ラジオボタンで選択)

html

1<div> 2 <p class="radiobtn"><input type="radio" id="radio1" name="q1" onchange="onRadioButtonChange();" value="値1, 値2"> <label for="radio1">2017年5月29日(月)</label></p> 3 <p class="radiobtn"><input type="radio" id="radio2" name="q1" onchange="onRadioButtonChange();" value="値1, 値2"> <label for="radio2">2017年5月30日(火)</label></p> 4</div>

こちらがデータを引き渡される側のHTMLです。

html

1<div> 2 <input type="hidden" name="product" value=""> 3 <input type="hidden" name="price" value=""> 4</div>

productとpriceそれぞれに引き渡すためのjQueryコードです。

javascript

1function onRadioButtonChange() { 2 var product_value = $("input[name='q1']:checked").val([0]); 3 document.form1.product.value = product_value; 4 5 var price_value = $("input[name='q1']:checked").val([1]); 6 document.form1.price.value = price_value; 7}

やりたいこととしては、、
最初のコード部分でvalue属性に値を複数入れておいて、
チェックされたらそのvalue属性を変数に入れて、
それぞれの値をproductとpriceに入れるということがしたいです。

どなたかお分かりの方いましたら宜しくお願い致します。。

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

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

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

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

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

guest

回答2

0

ベストアンサー

UIとしてはあまり良い処理だとは思えません。
受け取ったサーバー側で処理するのが妥当です。
もしどうしてもサーバー側で処理がわけられないとしても
ラジオボタンから値をhiddenに渡す意味があまりないと思います。

hiddenに予めvalueを設定しておきdisabled属性をつけてラジオボタンに
対応させておき、ラジオボタンの付替えでdisableを調整すればいいのでは?

sample

javascriptで同じp内にあるproductとpriceのdisabledを変更するサンプルです。
HTMLの構造だけ気をつけて下さい
とりあえずtype="text"にしてありますが、隠すためにhiddenにしてもいいでしょう
※IE対策のためNodeListを配列に入れ替える処理がはいっています

javascript

1<script> 2document.addEventListener("change",function(e){ 3 var t=e.target; 4 if(t.name=="q1"){ 5 n2a(document.querySelectorAll("[name=q1]")).forEach(function(i){ 6 var flg=t!=i; 7 n2a(i.parentNode.querySelectorAll("[name=product],[name=price]")).forEach(function(j){ 8 j.disabled=flg; 9 }); 10 }); 11 } 12}); 13function n2a(node){ 14 if(!NodeList.prototype.forEach){ 15 node = Array.prototype.slice.call(node,0); 16 } 17 return node; 18} 19</script> 20<form method="get"> 21<p class="radiobtn"><input type="radio" id="radio1" name="q1"> <label for="radio1">2017529日(月)</label> 22<input type="text" name="product" value="値11" disabled> 23<input type="text" name="price" value="値12" disabled> 24</p> 25<p class="radiobtn"><input type="radio" id="radio2" name="q1"> <label for="radio2">2017530日(火)</label> 26<input type="text" name="product" value="値21" disabled> 27<input type="text" name="price" value="値22" disabled> 28</p> 29<p class="radiobtn"><input type="radio" id="radio2" name="q1"> <label for="radio3">2017531日(水)</label> 30<input type="text" name="product" value="値31" disabled> 31<input type="text" name="price" value="値32" disabled> 32</p> 33</div> 34<input type="submit" value="go"> 35</form> 36 37

投稿2017/05/29 06:06

編集2017/05/29 08:53
yambejp

総合スコア114767

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

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

think49

2017/05/29 06:20

同意します。 サーバ側にはCSVパーサ、JSONパーサがあるでしょうから、フォーマットさえ決めれば、適切に扱うことは容易だと思います。
ShunYoshizawa

2017/05/29 07:26

そうでしたか、、 処理的に良くなくてもこのやり方でできるのであれば、このやり方での解決方法が知りたいです。 わがままを言ってしまい申し訳ありません。。 もしお分かりでしたら教えていただきたいです。
yambejp

2017/05/29 08:53

sampleつけときました
ShunYoshizawa

2017/06/05 01:20

ご返信遅れてしまい申し訳ありません。。 こちらのコードでもできませんでした。。 なにが間違っているかお分かりでしょうか?
guest

0

カンマ区切りでsplitしてあげると配列に入ります!

javascript

1var values = document.getElementsByName("q1").value.split(','); 2console.log(values[0]); 3console.log(values[1]); 4var product_value = values[0]; 5var price_value = values[1];

投稿2017/05/29 05:48

mirainonakamura

総合スコア137

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

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

ShunYoshizawa

2017/05/29 07:24

えっと、、これですとチェックされたかどうかが分からなくないでしょうか、、? チェックされた方のボタンのvalue2つを取得したいのですが、どうしたらよろしいでしょうか?
takaboo

2017/05/29 08:41

radioのonChangeイベントで呼び出す関数の内容を上記にしては、と言う提案だと思いますよ さらにhiddenにしまう記述が要りますが、それはご自身の書いたコードにありますね
mirainonakamura

2017/05/31 06:00

takabooさんフォローありがとうございます。その意図でございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問