
掲示板の投稿欄を、
「お手軽版(投稿欄(1))」と
「本格版(投稿欄(2))」の二種類を用意したいと思っています。
JavaScriptを使って、
例えば、投稿欄(1)に名前を入力したら、
同じ文字列が投稿欄(2)にも反映されるようにしたいのですが、
どのようなコードを書けば良いでしょうか。
似たような質問を調べたのですが、
(1)を<input name="A">、(2)を<input name="B">としてAをBにコピーするというものがありました。
試してみると確かに同じ文字列が入力されるのですが、肝心の投稿ができませんでした。
掲示板の仕様上、
(1)も(2)も<input name="name">の部分は必須で、変えられないようなのです。
ちなみに(1)にだけ入力して(2)が空欄だと、空欄として処理されてしまいます。
<form>タグも一つしか使えません。
一晩色々やってみてどうしても上手くいかず、
最後の手段として、こちらでご教授願えればと思い、お伺いしました。
説明がヘタで申し訳ないのですが、不足な点は仰って下さい。
どうぞよろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
動くと思うんですがね・・・
nameCとnameDが逆になってるのかも?
下記と比較してください。
function copyToC()
{
var nameC = document.getElementById("nameC");
var nameD = document.getElementById("nameD");
nameD.value = nameC.value;
}
function copyToD()
{
var nameC = document.getElementById("nameC");
var nameD = document.getElementById("nameD");
nameC.value = nameD.value;
}
※余談
スクリプトをシンプルにしたいなら下記でもOK
タグ
<input name="name" id="nameA" onkeyup="copyTo('nameA','nameB')">
<input name="name" id="nameB" onkeyup="copyTo('nameB','nameA')">
<input name="name" id="nameC" onkeyup="copyTo('nameC','nameD')">
<input name="name" id="nameD" onkeyup="copyTo('nameD','nameC')">
スクリプト
function copyTo(fromId, toId)
{
var fromTag = document.getElementById(fromId);
var toTag = document.getElementById(toId);
toTag.value = fromTag.value;
}
素晴らしい!
新しく教えていただいたシンプル版で、完璧に動作いたしました!
今回は度重なる質問にお答えいただき、ご迷惑をお掛けしました。
そして、本当にありがとうございました。
感謝・感謝の一言です。
私もこのように「やりたい事」が自力で解決できるよう、精進したいと思います。
本当に、大変お世話になりました。
No.4
- 回答日時:
確認してみたところInternetExplorerだと妙な動きをするようですね。
いっそこうしましょうか。
IDを追加しても問題ないでしょうし。
タグ
<input name="name" id="nameA" onkeyup="copyToB()">
<input name="name" id="nameB" onkeyup="copyToA()">
スクリプトは下記。
function copyToB()
{
var nameA = document.getElementById("nameA");
var nameB = document.getElementById("nameB");
nameB.value = nameA.value;
}
function copyToA()
{
var nameA = document.getElementById("nameA");
var nameB = document.getElementById("nameB");
nameA.value = nameB.value;
}
この回答への補足
素晴らしいです!完璧に同期しました。
本当にありがとうございます!
こちらを「ペンネーム<name="name">」と「本文<name="sub">」
の両方の入力欄に適用させたくて、上記コードに習ってスクリプトにnameCとnameDを追加し、
二つの「本文」のタグに
<input name="name" id="nameC" onkeyup="copyToD()">
<input name="name" id="nameD" onkeyup="copyToC()">
のように追記して適用させようとしたのですが、うまく動きませんでした。
そんなに単純ではないのですね・・・
ここまで教えて頂いて、
ここからの応用は初歩的な事なのかもしれずお恥ずかしい限りですが、
二つの入力欄をそれぞれ同期させるには、どのようにすれば良いのでしょうか。
是非ともお力をお貸し頂けたら嬉しいです。
No.3
- 回答日時:
先に書いたものは余計な行がありましたね。
ムダも多かったので下記でどうぞ
タグは下記にする。
<input name="name" onkeyup="namecopy(this)">
スクリプトは下記。
function namecopy(tag)
{
// name="name"のタグを全て取得
var names = document.getElementsByName("name");
// 入力文字(tag.value)を全てのname="name"のvalueにいれる
for (var i = 0; names.length > i; i++) {
names[i].value = tag.value;
}
}
この回答への補足
再びの回答、本当にありがとうございます。
試させていただいたところ、見事にリアルタイムに同期しました!
・・・のですが今度は、
半角英数での入力は、本当に素晴らしく理想通りの同期をしてくれるのですが、
日本語入力で文字を打とうとすると、問題が発生してしまいました。
例えば日本語入力で「今日は晴れ」と打ちたい時に、
「今日は」とまず打って、続けて「晴れ」と打とうとすると、
「今日は」が上書きされて、「晴れ」だけが残ってしまう、という状態になりました。
どうやら、日本語入力の場合は「最後に入力した文字」だけがフォーム内に残る、
という状態のようです。
一応私も素人なりに原因を探ろうとしたのですが、
結局さっぱり分からずじまい・・・
こう何度もお尋ねして申し訳ない気持ちになってきますが、
もし何か改善策がございましたら、お力をお貸し頂けたら幸いです。
No.2
- 回答日時:
他にも<input name="name">のタグがある場合は使えませんが・・・
(1)と(2)の<input name="name">を
<input name="name" onkeyup="namecopy()">として
javascriptが
function namecopy()
{
// name="name"のタグを全て取得
var names = document.getElementsByName("name");
var copyValue = "";
// 入力されている文字を取得
for (var i = 0; names.length > i; i++) {
if(names[i].value != "")
{
copyValue = names[i].value;
break;
}
}
// 取得した文字を全てのname="name"のvalueにいれる
for (var i = 0; names.length > i; i++) {
if(names[i].value != "")
{
names[i].value = copyValue;
}
}
}
この回答への補足
とても具体的な回答ありがとうございます!
さっそく試してみました。
すると見事にコピーされるにはされる・・・のですが、
リアルタイムな同期(1のフォームに文字を打つと同時に2にも反映される)ではなくて、
2のフォームにワンアクション(なんでもいいから文字を打つとか)しないと同期しないようでした。
ワンアクションを加えた後はリアルタイムに同期するのですが・・・
具体的なコードまで書いていただいて本当にありがとうございます。
欲張りな質問になってしまいますが、
ワンアクションを加えることなく、最初からリアルタイムな同期というのは難しいものでしょうか?
もしもいい方法がありましたらご教授願えたら嬉しいです。
No.1
- 回答日時:
>掲示板の仕様上、
>(1)も(2)も<input name="name">の部分は必須で、変えられないようなのです。
>ちなみに(1)にだけ入力して(2)が空欄だと、空欄として処理されてしまいます。
><form>タグも一つしか使えません。
ということは、あなたが作った掲示板ではなく、どこかの掲示板プログラムを利用しているということですね。
「<input name="name">の部分は必須で、変えられない」「<form>タグも一つしか使えません」ということであれば、素直に考えれば「掲示板のフォームは1つしか設置できない」ということになるでしょう。それを踏まえて解決策を考えるなら。
1. 掲示板のプログラムを書き換えて対応する。
2. フォームを1つだけで済むように対応する。
このいずれかになるでしょう。
プログラムが変更できれば、1の掲示板の処理を変更することで、「<input name="B">としてAをBにコピーする」というやり方ができるようになるでしょう。
それが無理なら、例えば本格版のフォームのみを用意し、必要に応じて不要な項目を非表示にして簡易版の表示にする、というようにして、1つのフォームで簡易版と本格版が切り替わるような方法が考えられるでしょう。
この回答への補足
回答ありがとうございます。
すみません、大事な部分を書き忘れていました、レンタル掲示板です。
なので提示して頂いた1の方法は恐らく無理だと思いますが、
2の方法はとても良さそうです。調べてみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二つの入力欄に、同時に同じ文...
-
【jQuery】input nameの文字列...
-
ボタンを押すとテキストボック...
-
javascriptでファイルを指定し...
-
name属性のないformタグの、中...
-
テキストボックスの値同士を比...
-
テキストボックスの入力をリセット
-
javascriptとPHPで入力フォーム...
-
新しくフォルダを作成したい
-
Javascriptでのbuttonのname属...
-
submitボタン押下時にPOSTされ...
-
テキストエリアをenterキーでフ...
-
JavaScriptにて動的に配列を作...
-
ラジオボタンでクリックした値...
-
時間の比較は可能でしょうか?
-
jquery.validate.jsについて
-
doPostBack 関数について
-
GETパラメータの内、空文字のク...
-
return trueとreturn falseの用...
-
ツリービューのチェックボック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【jQuery】input nameの文字列...
-
二つの入力欄に、同時に同じ文...
-
ラジオボタンでクリックした値...
-
新しくフォルダを作成したい
-
name属性のないformタグの、中...
-
JavaScriptにて動的に配列を作...
-
フォームの一部をPOSTで送信で...
-
複数のテキストフィールドを同...
-
入力フォームに半角スペース以...
-
ASP.NETでNAME属性を固定にしたい
-
GETパラメータの内、空文字のク...
-
javascriptの値をformのinput h...
-
現在フォーカスのオブジェクト...
-
【ASP.NET MVC】HTMLヘルパーに...
-
テキストボックスの値同士を比...
-
VBscript で複数テキストがある...
-
テキストボックスの入力をリセット
-
cookie使用時にundefinedと表示...
-
javascriptからxsltに値を渡したい
-
Javascriptでのbuttonのname属...
おすすめ情報