- ベストアンサー
HTML、同じデータを表示する方法
HTMLの2箇所のテキストボックスに同じデータを表示したいのですが、やり方がわかりません。 たとえば、質問1と質問5が「氏名」のとき、 質問1の答えに書いた文字列が、質問5の回答欄に表示される、 逆に、質問5を先に答えた場合には、質問1の回答欄に質問5で答えた文字列が表示される ようにしたいです。 質問1 氏名:<input type="text" name="氏名" /> : : 質問5 氏名:<input type="text" name="氏名" /> では、別々の名前入力になって、関連つけることができません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
おなじページ内でよければこんな感じ? <script> try{ document.addEventListener ('keyup',function(e){keyupfunc(e)},true); }catch(e){ document.attachEvent('onkeyup',function(e){keyupfunc(e)}); } function keyupfunc(e){ var t = (e.srcElement || e.target); if(t.nodeName=="INPUT"){ switch(t.name){ case "ans1": t.form.elements["ans5"].value=t.value; break; case "ans5": t.form.elements["ans1"].value=t.value; break; } } } </script> <form> <p> 質問1 氏名:<input type="text" name="ans1" /> 質問5 氏名:<input type="text" name="ans5" /> </p> <form>
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
htmlだけでは前ページのデータを引き継ぐことはできません なにかサーバーサイドで動くプログラムが必要です。 (javascriptでcookieを使えばできないことはないですが・・・) またinputで同じnameを指定するのはあまり得策ではありません。 simei1、simei2・・・のように別名をつけるか、 一部プログラムで認識されるsimei[]のような文字を使うとよいでしょう。 なおnameに漢字などを使うとうまくデータが渡らないケースがあるので 英数文字(および一部許された文字)で指定することをお勧めします。
お礼
回答ありがとうございます。 >またinputで同じnameを指定するのはあまり得策ではありません。 そうでした。 いろいろ調べて、ボタンを使うと質問1の答えに書いた文字列が、質問5の回答欄に表示されるとこまでできましたが、その逆が行きません。 その逆のボタンを作成するなら可能ですが、新しい値にそろえるようなもっと賢い方法ありませんか? 氏名:<input name="ans1" /><br> :<br> :<br> 氏名:<input name="ans5" /><br> <input type="button" value="同期" onclick="document.a.ans5.value = document.a.ans1.value;"><br>
お礼
まさに、これです。 ありがとうございます!! 一方を書き換えると、他方も書き変わるの確認しました。 このようなペアが何箇所かあるので、回答1-5ペア用のスクリプト、回答2-9ペア用のスクリプトといった具合にペアごとに、スクリプトを用意すればいいのですね。 助かりました。