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

a.htmlからプルダウンで選択した1~6までのhtmlに、フォームデータを送る
ということは可能でしょうか?

いろいろ組み合わせたりしていますがうまくいきません。
どなたかご教授お願い致します。

<SCRIPT LANGUAGE="JavaScript">
<!--
function jumpMenu(){
location=(document.link.list.options
[document.link.list.selectedIndex].value);
}
//--></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
//
sendURL = " jumpMenu()";
function sendData()
{
sData = escape(doument.myFORM.theData.value);
Location.href = sendURL + "?"+sData;
}
//-->
</SCRIPT>
<form name="myFORM">
<SELECT NAME="list">
<OPTION VALUE="1.html" SELECTED>1</OPTION>
<OPTION VALUE="2.html">2</OPTION>
<OPTION VALUE="3.html">3</OPTION>
<OPTION VALUE="4.html">4</OPTION>
<OPTION VALUE="5.html">5</OPTION>
<OPTION VALUE="6.html">6</OPTION>
</SELECT>
<INPUT TYPE="TEXT" SIZE="61" NAME="a">
<INPUT TYPE="submit" VALUE="GO" onClick="sendData()"> <INPUT TYPE="reset" VALUE="クリア">

A 回答 (4件)

サンプルを作りました。

参考にして考えてやってみてください。

'********** ここから **********
<SCRIPT LANGUAGE="JavaScript">
<!--
//テキストボックスから値の取得
// obj : テキストボックスの名前
function getTextbox(obj)
{
return (document.myFORM.elements(obj).value);
}
//チェックボックスから値の取得
// obj : チェックボックスの名前
function getCheckbox(obj)
{
if (document.myFORM.elements(obj).checked == true){
return (document.myFORM.elements(obj).value);
} else {
return ("");
}
}
//リストボックスから値の取得
// obj : リストボックスの名前
function getSelect(obj)
{
return (document.myFORM.elements(obj).options[document.myFORM.elements(obj).selectedIndex].value);
}
//各値の取得後、テキストエリアに表示
function getDispData()
{
var sDispData;
sDispData = "theData:" + getTextbox("theData") + "\n";
sDispData = sDispData + "theData2:" + getTextbox("theData2") + "\n";
sDispData = sDispData + "1:" + getCheckbox("1") + "\n";
sDispData = sDispData + "2:" + getCheckbox("2") + "\n";
sDispData = sDispData + "address:" + getSelect("address");

document.myFORM.elements("DispData").value = sDispData;
}
//-->
</SCRIPT>
<form name="myFORM">
theData:
<INPUT TYPE="TEXT" SIZE="61" NAME="theData"><BR>
theData2:
<INPUT TYPE="TEXT" SIZE="61" NAME="theData2"><BR>
1:
<INPUT TYPE="checkbox" NAME="1" VALUE="1"><BR>
2:
<INPUT TYPE="checkbox" NAME="2" VALUE="2"><BR>
性別:
<SELECT NAME="address">
<OPTION SELECTED VALUE="">▼性別
<OPTION VALUE="男">男
<OPTION VALUE="女">女
</SELECT>
<BR><BR>
<INPUT TYPE="button" NAME="getValue" VALUE="データ表示" onClick="getDispData();">
<BR><BR>
<TEXTAREA NAME="DispData" COLS="50" ROWS="5"></TEXTAREA>
</form>
'********** ここまで **********
    • good
    • 0
この回答へのお礼

本当に有り難うございました。
合わせて、自分でもcgiに送るという方法も考えてみました。
データを送る方法も自分なりに考えて動作するようになりました。
とても勉強になりました。

お礼日時:2002/08/09 19:52

そうですね。


ご希望のことであれば、BlueRayさんの書かれたソースで実現可能だと思います。

あえてあげれば、
document.myFORM.method = "post";
は、直接
<form name="myFORM" METHOD="POST">
と書いてしまった方がいいかもしれません。

ただ、ちょっと気になったんですが、
> 1.htmlから6.htmlのいずれかのページに送り、ページ内に送られたデータをためて、
> そこからまた追加のフォームを入力してcgiにデータを送るということがしたいのです。
という事は、SELECTで渡る先はCGIではないという事なんですね?
だとしたら、METHODはPOSTではなく、GETでないと、引渡しはできません。
(HTMLファイルではPOSTの情報を受け取れないので)
ただし、GETは環境変数ですので、引渡しのできる文字列長の制限があります。
(長さのMAXはサーバーの設定によります)

SELECTで渡る先がCGIであれば、POSTの変数を受け取って、hiddenフォームにいれておけば、追加情報とともにその先のCGIに引き渡すことは可能です。
そこらへんを注意なさってください。
    • good
    • 0
この回答へのお礼

ご忠告ありがとうございます。
色々勉強になりました。

お礼日時:2002/08/09 19:56

質問にかかれているソースを予測される型に変更しています。


以下のようにしては如何でしょう。

'********** ここから **********
<SCRIPT LANGUAGE="JavaScript">
<!--
function jumpMenu(){
return (document.myFORM.list.options[document.myFORM.list.selectedIndex].value);
}
function sendData()
{
var sData = escape(document.myFORM.theData.value);
document.myFORM.method = "post";
document.myFORM.action = jumpMenu();
document.myFORM.submit();
}
//-->
</SCRIPT>
<form name="myFORM">
<SELECT NAME="list">
<OPTION VALUE="1.html" SELECTED>1</OPTION>
<OPTION VALUE="2.html">2</OPTION>
<OPTION VALUE="3.html">3</OPTION>
<OPTION VALUE="4.html">4</OPTION>
<OPTION VALUE="5.html">5</OPTION>
<OPTION VALUE="6.html">6</OPTION>
</SELECT>
<INPUT TYPE="TEXT" SIZE="61" NAME="theData">
<INPUT TYPE="submit" VALUE="GO" onClick="sendData()"> <INPUT TYPE="reset" VALUE="クリア">
</form>
'********** ここまで **********

この回答への補足

さきほどはありがとうございました。
追加でお尋ねしたいのですが、
例えばa.htmlのフォームに
<INPUT TYPE="TEXT" SIZE="61" NAME="theData">
<INPUT TYPE="TEXT" SIZE="61" NAME="theData2">
<INPUT TYPE="checkbox" NAME="1" VALUE="1">
<INPUT TYPE="checkbox" NAME="2" VALUE="2">
<SELECT NAME="address">
<OPTION SELECTED VALUE="">▼性別
<OPTION VALUE="男">男
<OPTION VALUE="女">女
</SELECT>の項目がある場合
javascriptの部分はどうかわるのでしょうか?

また受ける方の1.htmlのjavascriptの部分も教えていただけますでしょうか?
素人考えで、受ける方に同じ<INPUT TYPE="TEXT" SIZE="61" NAME="theData"> が入っていれば
データが移るのかとおもいましたが、、、うまくいきませんでした。
よろしくお願い致します。

補足日時:2002/08/09 14:20
    • good
    • 0
この回答へのお礼

BlueRayさん
どうもありがとうございます!
さっそく試してみます。

お礼日時:2002/08/09 12:54

う~ん、doument.myFORM.theData.value ってのはなんなんでしょう?


見たところ、theDataっていう名前のフォームエレメントはなさそうですが・・・。(^^;;

もし、値とhtml名が同じなのであれば、

<SELECT NAME="list">
<OPTION VALUE="1" SELECTED>1</OPTION>
<OPTION VALUE="2">2</OPTION>
<OPTION VALUE="3">3</OPTION>
<OPTION VALUE="4">4</OPTION>
<OPTION VALUE="5">5</OPTION>
<OPTION VALUE="6">6</OPTION>
</SELECT>

としておいて、

<SCRIPT LANGUAGE="JavaScript">
<!--
//
function sendData()
{
document.myForm.action = document.myForm.list[document.myForm.list.selectedindex].value + ".html";
document.myForm.submit();
}
//-->
</SCRIPT>

とすれば、2が選択されれば、2.htmlにlist=2という情報が渡ります。
値とhtmlの名前が異なるのであれば、
1.SELECTのVALUEにカンマ区切りなどで両方の値を持たせ、分割して飛び先と引数にする。
2.Javascriptソースの中に飛び先情報を持たせ、選択された値によって、どこに飛ぶか制御する
などの方法が考えられます。

ソースと質問からは上記のような推察しかできませんでした。
1~6までのhtml全てに値を渡したい訳では無いですよね?
また、theDataが何をさすのか?
aという名前のtextフィールドはなんのか?
等、ちょっとソース上からは何をされたいのかわかりません。

どういう情報をどう渡したいのか、そこらへん補足していただければ、もうちょっと具体的なアドバイスが集まるかも。

この回答への補足

Prynneさん素早い回答有り難うございます。
確かに説明不足すぎますね申し訳ございません。
まずやりたいことは、a.htmlの中に、
たとえば氏名や住所を入力したりチェックボックスで、
項目を選んだ複数のフォームのデータを、

1.htmlから6.htmlのいずれかのページに送り、ページ内に送られたデータをためて、
そこからまた追加のフォームを入力してcgiにデータを送るということがしたいのです。

うーjavascriptぐちゃぐちゃのソースですみません。
ソースは、データを別ページにおくるものと、プルダウンでリンクをとばすものを
合わせてみようとしたのですが、お見苦しいものですみません。。。

補足日時:2002/08/09 11:59
    • good
    • 0

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