- ベストアンサー
ボタンの処理
ボタンをクリックしたら指定されたサブルーチンの処理をするようなプログラムを作ろうとしているのですができません。submitではなくbuttonでやりたいのですが無理でしょうか?分かる方がいらっしゃいましたらよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 これはPerlというよりもHTMLやJavaScriptのお話になりますが、 <button value="削除" name="hoge" onClick="delete()"> とした場合、「ボタンを押したらJavaScriptのdelete()関数を呼び出す」といった意味になります。 mizumaki22さんの組んだソース内に「function delete()」があればそれが呼ばれますが、無ければそこでエラーが発生するでしょう。 これは全てクライアント側で行われる作業であり、Webサーバ側では関知しません。 引き換え、Perlを動かす為にはサーバにアクセスして.cgiファイルを呼ばなければなりません。 そして.cgiファイルが呼ばれた際にWebサーバが内部的に処理を行い、その結果をクライアントに返します。 その為に一般的に使用されるのが<form action="hoge.cgi">といった記述です。 そうして<form>に記述された.cgiファイルを呼ぶには、<form>に対して"submit"を送らなければなりません。 その為に使用するのが<input type="submit" value="削除">といったような記述です。 mizumaki22さんのご質問の場合、この<input type="submit">を使わず<input type="button">で同じような動作をさせたいのかな?と読み取れました。 その場合には<input type="button">を押されたタイミングで"submit"を送ってやる必要があります。 それが#1で書いた<input type="button" onClick="submit()">の意味です。 前置きが長くなりましたが、直し方について・・といっても、もうほとんど書いてしまいましたが。(^_^; mizumaki22さんの補足してくだっさったソースを見ると、CGI.pmというやつでしょうか。(正直、この辺りには余り詳しく無いのですが。) > print button(-value=>"削除",-name=>"$link2",-onclick=>"delete()"); 見たところ、この記述だと<input type="button" value="削除" name="hoge" onClick="delete()">というHTMLに出力されるように見受けられます。 これが<input type="button" value="削除" name="hoge" onClick="submit()">とHTML出力されれば動くと思われますので、 > print button(-value=>"削除",-name=>"$link2",-onclick=>"submit()"); でよろしいかと思われます。
その他の回答 (1)
- Chronos198
- ベストアンサー率30% (105/349)
<input type="button" value="Button" onClick="submit()"> とすれば、<input type="submit">と(ほぼ)同様に動作させる事は可能です。
補足
ご回答ありがとうございます。 print start_html(); print start_form(-method =>'post' ,-action=>'delete.cgi'); print button(-value=>"削除",-name=>"$link2" ,-onclick=>"delete()"); print end_form; print end_html; としてやってみたのですが何も反応しませんでした。 他に何か方法はないでしょうか?
お礼
詳しいご回答ありがとうございます。その方法でやっていきたいと思います。