入力フォームを2つ用意し
第1フォームの入力欄の1部を第2フォームの入力欄のデータとして
submitさせたいのですが
<INPUT TYPE="radio">と<SELECT>の入力値がうまく引継げません。
下記のようなJavaスクリプトとHTMLなのですが
Javaスクリプトで「value」を=にすると
「radio」のほうはundefin、
「SELECT」で複数選択した場合は、一つ目の選択肢のみしか
引継げませんでした。
Javaスクリプトでうまくいく方法がありましたら
ご教示ください。
----Javaスクリプト--------------------------------
function aaa() {
document.FROM2.A.value = document.FROM1.A.value;
document.FROM2.B.value = document.FROM1.B.value;
document.FROM2.C.value = document.FROM1.C.value;
document.FROM2.submit();
}
----HTML--------------------------------
<FORM NAME="FROM1" METHOD="POST" ACTION="***">
<SELECT NAME="A" MULTIPLE>
<OPTION VALUE="aa">セレクトa
<OPTION VALUE="bb">セレクトb
<OPTION VALUE="cc">セレクトc
<OPTION VALUE="dd">セレクトd
</SELECT>
<INPUT TYPE="radio" NAME="B" VALUE="" CHECKED>選択なし
<INPUT TYPE="radio" NAME="B" VALUE="1" CHECKED>ラジオ1
<INPUT TYPE="radio" NAME="B" VALUE="2" CHECKED>ラジオ2
<INPUT TYPE="text" NAME="C">
<INPUT TYPE="text" NAME="D">
<INPUT TYPE="submit" NAME="OK_BTN" VALUE="OK">
</FORM>
<FORM NAME="FROM2" METHOD="POST" ACTION="***">
<INPUT TYPE="hidden" NAME="A">
<INPUT TYPE="hidden" NAME="B">
<INPUT TYPE="hidden" NAME="C">
<INPUT type="button" onClick="JavaScript:aaa();" name="OK_BTN" value="OK">
</FORM>
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
失礼。
#3です下から6行目で書き漏れ
f2.options[ii] = new Option("test",f1.options[ii].value);
↓
f2.options[ii] = new Option("test",f1.options[ii].value);
f2.options[ii].selected = true;
selectedがtrueでないとpostしたとき値が取れませんね。
No.3
- 回答日時:
僕もいろいろと突っ込みたいのですが全部スルーすることにします。
^^;少々邪道なやり方ですが、cssでdisplay:noneを指定すると表示されなくなることを利用して
擬似的なhiddenを作成することが出来ます。対応していないブラウザだと不恰好になりますが。
<form id="FROM1" action="" method="POST">
<select id='field1' size=10 multiple>
<option value=1>test1</option>
<option value=2>test2</option>
<option value=3>test3</option>
</select>
</form>
<form id="FROM2" action="" method="POST">
<div style="display:none">
<select id='field2' multiple></select>
</div>
</form>
<input type='button' value='up' onclick='on()' />
<script type='text/javascript'><!--
function on()
{
var f1 = document.getElementById('field1');
var f2 = document.getElementById('field2');
for(ii=0;ii<f1.length;ii++) {
if(f1.options[ii].selected) {
f2.options[ii] = new Option("mogemoge",f1.options[ii].value);
}
}
document.getElementById('FROM2').submit();
}
// --></script>
No.2
- 回答日時:
つっこみどころが多いので細かく解説するのはやめますが、
配列データをtextに落とすのですから仕様をきめなおさないといけません。
たとえばカンマ区切りにするなら以下のようにしてください
(hiddenだとデバッグしにくいのでtextにしてあります。実際にはhiddenでも動きます)
<script>
function aaa(f2) {
var f1=document.getElementById("FROM1");
var f1a=f1.A;
f2.A.value="";
for(var i=0;i<f1a.length;i++){
if(f1a[i].selected) f2.A.value+=(f2.A.value==""?"":",")+f1a[i].value;
}
var f1b=f1.B;
f2.B.value ="";
for(var i=0;i<f1b.length;i++){
if(f1b[i].checked) f2.B.value+=(f2.B.value==""?"":",")+f1b[i].value;
}
f2.C.value = f1.C.value;
return true;
}
</script>
<form id="FROM1" method="post">
<select name="A" multiple>
<option value="aa">セレクトa</option>
<option value="bb">セレクトb</option>
<option value="cc">セレクトc</option>
<option value="dd">セレクトd</option>
</select>
<input type="radio" name="B" value="" checked>選択なし
<input type="radio" name="B" value="1" checked>ラジオ1
<input type="radio" name="B" value="2" checked>ラジオ2
<input type="text" name="C">
<input type="submit" value="OK">
</form>
<form id="FROM2" onSubmit="return aaa(this);">
<input type="text" name="A">
<input type="text" name="B">
<input type="text" name="C">
<input type="submit" value="OK">
</form>
No.1
- 回答日時:
AとBはどちらも配列になっています。
Aの取得は以下。
var a = '選ばれてない';
if (document.FROM1.A.selectedIndex > -1) {
a = document.FROM1.A.options[document.FROM1.A.selectedIndex].value;
}
Bの取得は以下。
var b = '選ばれてない';
var n = document.FROM1.B.length;
for (var i=0;i<n;i++) {
if (document.FROM1.B[i].checked) {
var b = document.FROM1.B[i].value;
}
}
こんな感じでやってみてはいかがでしょうか。
ありがとうございます。
radioのほうは、うまく入力値をとることができました。
SELECTのほうは、やはり2つ以上選択すると
1つ目の選択した値しかとることが出来ませんでした。
radioと同じように下記のようにしてみましたが
エラーとなりました。
(FROM2のほうが「TYPE="hidden"」だからと思います。 )
他に何か策はありますでしょうか。。。
var n = document.FROM1.A.length;
for (var i=0;i<n;i++) {
if (document.FROM1.A[i].selected) {
document.FROM2.A[i].value = document.FROM1.A[i].value;
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NET DateTimeの型について
-
selectboxのoptionタグのvalue...
-
switchを使って四則演算のプロ...
-
value内に変数を入れたい
-
クイズ作成:15個の問題から5個...
-
C言語クイックソートの比較総回...
-
電卓のJavaScript
-
VBAをJavaScriptに変換したいです
-
IF文で
-
フォームの入力欄の未記入チェ...
-
大量のselect要素のvalueを短い...
-
値を初期化したい。
-
複数のsubmitボタンで押された...
-
ラジオボタンと連動して文字列...
-
Pythonで会員サイトの自動ログ...
-
javascriptでhiddenに二次元配...
-
テキストエリア内容からチェッ...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
localStorageでのcheckbox制御
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
hiddenのvalueの値を変えたい
-
value内に変数を入れたい
-
複数のsubmitボタンで押された...
-
3桁区切りのカンマをつけたい...
-
VB.NET DateTimeの型について
-
javascriptでhiddenに二次元配...
-
テキストボックスに入力された...
-
eval()を使わずに数値を取得し...
-
引数に数値、文字列の混在
-
クイズ作成:15個の問題から5個...
-
sessionStorageを調べています。
-
setIntervalの間隔を途中で変更...
-
javascriptにてHTMLのhiddenエ...
-
Pythonで会員サイトの自動ログ...
-
セレクトボックスの初期選択状...
-
name属性が同じフォームが複数...
-
ラジオボタンの選択で解答・点...
-
商品コードを入れたら自動で商...
-
演算対象の数字と演算子を入力...
-
フォームで入力した値を別のフ...
おすすめ情報