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

メールフォームに変数を送ろうとしています。
ただ、送り元がデザインの制約で<FORM>のボタンではなく、<A>のリンクになってしまってます。
<A>で変数を送ろうとすると、
href="./mail.cgi?hen1=xx&hen2=xxx"
という形ですよね。そうすると、アドレス欄に変数がすべて載ってしまいますよね。
これをどうにかして非表示にすることは出来ないのでしょうか?(いわゆるtype=hidden的な事)
または、<FORM>内で文字列をボタンにすることは可能なのでしょうか?

A 回答 (8件)

#1です。


こんな感じでしょうか。アンカータグのhref属性は適当な値を入れておいて問題ないです。
フォーム名には formタグでname属性を指定して、それを使います。
onclickでのreturn(false)でアンカータグでの遷移を抑制しています。

<form method="post" action="mail.cgi" name="mail_form">
</form>
<a href="#" onclick="document.test_form.submit();return( false );">問合せ</a>

また、#2さんの方法でも同様です。
#2さんの方法そのままだと文字列部分がクリック出来るかどうかわからない為、<u>タグでアンダーラインにしたり、style="cursor:pointer"でカーソルを変えたりすると良いのではないでしょうか。

この回答への補足

返答遅れてすみません。
リンクとして機能する(文字色反転・カーソル変化)し、ちゃんとリンク先にも移動するのですが、hiddenの内容を送ってくれません。

print "<FORM name=\"form\" method=\"post\" action=\"../mail/mail.cgi\">\n";
print "<TD>\n";
print "<input type=hidden name=li_no value=$no>\n";
print "<input type=hidden name=li_old value=$old>\n";
print "<input type=hidden name=li_name value=$name>\n";
print "<a href=\"#\" onclick=\"document.form.submit();return( false );\">$name について問い合わせメールを出す</a>\n";
print "</TD>\n";
print "</FORM>\n";

何か間違っているでしょうか?

補足日時:2005/12/03 15:07
    • good
    • 0

> <A href="./mail.cgi?hen1=xx&hen2=xxx">


この場合で取れて、
"<FORM name=\"form\" method=\"post\" action=\"../mail/mail.cgi\">
こっちだと取れない・・

メソッドがGETの場合とPOSTの場合なので、データの取り方違いますけど、大丈夫ですか?


ちなみに前者(GET)の場合、$ENV{'QUERY_STRING'}から取得できますが、
後者(POST)の場合read STDIN, $query, $ENV{'CONTENT_LENGTH'};こんな感じの取得になるかと思います。
    • good
    • 0

#6補><A href="./mail.cgi?hen1=xx&hen2=xxx">方式だとちゃんと表示(取得)されるんです。


そういえば、
#2では action=\"../mail/mail.cgi\"
になっていますね。
action=\"./mail.cgi\"
ではないのですか?
    • good
    • 0

#1,3です。



> 何か間違っているでしょうか?
見た感じ、フォームの書式に間違いはないようですね。

実は送られていないのではなく、取得方法が間違っているということはないですか?

この回答への補足

返答ありがとうございます。
<A href="./mail.cgi?hen1=xx&hen2=xxx">方式だとちゃんと表示(取得)されるんです。
フォームにしたからといってそっちを変更する必要は無いと思っていたのですが、何か変えないといけなかったでしょうか?

補足日時:2005/12/05 08:41
    • good
    • 0

#4で\"するのを忘れていました!



Perlなら
print qq(<FORM name="FORM1" method="post" action="../mail/mail.cgi">\n);
でもいいかも
    • good
    • 0

print "<FORM method=\"post\" action=\"../mail/mail.cgi\">\n";



print "<FORM name="FORM1" method=\"post\" action=\"../mail/mail.cgi\">\n";
とか名前を付けてやります。
print "<span onclick=\"document.FORM1.submit()\">$name について問い合わせメールを出す</span>\n";
付けた名前を指定してやります
    • good
    • 0

><FORM>内で文字列をボタンにすることは可能なのでしょうか?


このことのためにリンクにしているのだったら
<button type="submit">文字列</button>
とすればいいと思います。
あるいは、形がボタンになってはいけないのだったら
<span onclick="document.フォーム名.submit()">文字列</span>
のようにすればいいと思います。

この回答への補足

>形がボタンになってはいけないのだったら
これを実現したかったんです。

で、やってみましたがうまく出来ません。

print "<TR>\n";
print "<FORM method=\"post\" action=\"../mail/mail.cgi\">\n";
print "<TD>\n";
print "<input type=hidden name=li_no value=$no>\n";
print "<input type=hidden name=li_old value=$old>\n";
print "<input type=hidden name=li_name value=$name>\n";
print "<span onclick=\"document.フォーム名.submit()\">$name について問い合わせメールを出す</span>\n";
print "</TD>\n";
print "</FORM>\n";
print "</TR>\n";

まずは、ボタンをクリックできませんでした。
さらに、「フォーム名」には何を当てはめればよいのでしょう?

補足日時:2005/11/24 14:21
    • good
    • 0

こういう方法ではいかがでしょうか?



ページ内にFormを用意
変数を全てHidden属性で用意
リンクを用意
※リンク自体は機能しないようにしておく

リンクをクリックした時にJavaScriptを使用してページ内のフォームを実行させる。

この回答への補足

>ページ内にFormを用意
方法OKです。
>変数を全てHidden属性で用意
これも方法OKです。
>リンクを用意
これも方法OKです。
>※リンク自体は機能しないようにしておく
?どうしたら良いのでしょう?
>リンクをクリックした時にJavaScriptを使用してページ内のフォームを実行させる。
?どうしたら良いのでしょう?

ちなみに、変数を送ろうとするページ(リンク元ページ)は別のCGIなのですが、問題ないのでしょうか?

補足日時:2005/11/24 13:24
    • good
    • 0

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