アプリ版:「スタンプのみでお礼する」機能のリリースについて

formの中で別のactionをもったsubmitボタンの設置。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<title>sample</title>
<script language="JavaScript" type="text/javascript">
<!--
//<クリックした時に実行される関数>
//*** 確認画面A
function func1(form){
document.form1.check[].value =form.check[].value;
document.form1.submit();
}

//*** 確認画面B
function func2(form){
document.form2.check[].value =form.check[].value;
document.form2.submit();
}
//-->
</script>
</head>
<body class="index">
<form enctype="multipart/form-data">
<input type="check" name="test[]" value="0">0
<input type="check" name="test[]" value="1">1
<input type="check" name="test[]" value="2">2
<input type="button" onClick="func2(this.form)" value="確認B">
<input type="button" onClick="func1(this.form)" value="確認A">
</form>

<!-- sousin.php画面へ -->
<form method="post" name="form1" action="sousin.php" enctype="multipart/form-data">
<input type="hidden" name="check[]">
</form>

<!--- text.php画面へ --->
<form method="post" name="form2" action="text.php" enctype="multipart/form-data">
<input type="hidden" name="check[]">
</form>


</body>
</html>


上記のように記述し、フォームの中に別のactionをもったsubmitボタンを設置しました。
チェックボックスで何と何がチェックされたかを渡したいのですが、エラーが発生します。
おそらくjavascript内の構文でcheck[]と記述してるからだと思いますが、
どのようにすれば受け渡すことができるのでしょうか。

checkのみにすると1つの値しか渡せません。

A 回答 (2件)

なんだかいろいろ…



>javascript内の構文でcheck[]と記述してるからだと思いますが~~
配列と想定されて、構文エラーになっているみたいですね。
(そもそもname属性に「[」、「]」の使用ってOKでしたっけ?)

inputにtype="check"ってないはずだけど、checkboxのつもりなのか、textのつもりなのか…?
いずれにしろ、同じ名前にだと受信時に区別がつかないけれどいいのかなぁ?
仮に問題なくても、ご提示のスクリプトで区別できないから、名前指定の方法では無理。
名前を使わずに、formのchildNodesを舐めてコピーするとか、面倒ならinnerHTMLとか、あるいはform要素のcloneとか…

やりたいことがよくわかってませんが、同じデータで違う送信先に送りたいということなのでしょうか?
もしそうならば、どうせjavascriptを利用するのなら、コピーなどしなくてもformの送信先(action)を変えるだけでよいのでは?
例えば onclick = "this.form.action='xxx.php'" みたいに…
    • good
    • 0
この回答へのお礼

ありがとうございました。
結局javascriptではできなかったので、別の方法で行いました。

お礼日時:2010/12/07 09:48

たぶんFAQです。



document.form1.elements['check[]'].value =form.elements['check[]'].value;

nameに[]の記号を入れるときは、通常はcheck[]が複数有るはず(PHPの処理の関係で)ですので、
elements['check[]'][0]というように、何番目かを指定しないと行けないはずです。

HTMLの文法ではnameに記号が使えませんから、
1つしかないなら、name="check[]"という書き方ではなく、name="check"としておく方が良いと思います。
(FirefoxはHTMLの文法に厳格ですから、今後、送信できなくなる可能性もあります。
PHPがどうなるかはわかりませんが、おそらくPHPの言語仕様変更が必要になると思います。)
    • good
    • 0
この回答へのお礼

ありがとうございました。
別の方法で乗り切りました。

お礼日時:2010/12/07 09:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!