- ベストアンサー
クリックした時にsubmitを実行する場合の記述方法について
過去の質問を見させて頂いて、HTMLでonsubmit="return false;"の記述とonclick="submit();"を組み合わせてinput type="button"にすればうまくいく事を知り、実際に作成してみたのですが、例えばPerlでHTMLを生成する際、ヒアドキュメントを利用せずに print "<form action='aaa.pl' method='POST' onsubmit='return false;'>\n"; や print "<input type='button' name='submit' value='保存' onclick='submit();'>\n"; ↑ と記述すると、エラーが生じうまくページが表示されません。セミコロンが途中で出てくるのでそれが原因かなと思ったりしているのですが、解決出来ません。原因とこの記述の方法でも出来る手段がありましたら、教えてください。お願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私はprint文でHTML記述をする場合は、 以下のように書く事が多いです。 HTMLの属性は""で囲むのが最も一般的かと思われるので、 変数展開しない部分のprint文は'で囲み、 変数、メタキャラは文字列連結演算子.でつなぎ、 "で囲んでいます。(囲まなくても良いかも print '<td valign="top">' . "\n"; print '<form action="update.pl" method="POST" onsubmit="return false;">' . "\n"; print '<input type="hidden" name="pass" value=' . "$pass " . '> ' . "\n"; 。 。 通常はHTML記述にはヒアを使用しています。 @などがたまにエラーとなりますが、そのときは エスケープシーケンス\を入れます。
その他の回答 (3)
- chausuyama
- ベストアンサー率23% (5/21)
; ではなく ' の前に付けてみてください。
補足
何度も補足して申し訳ございません。いろいろな方に指導していただいて試しているのですが、どうもうまくいきません(>_<) 'の前ということは print "<form action='update.pl' method='POST' onsubmit=\'return false;\'>\n"; こんな感じでしょうか?いろいろ「'」をつけないパターンも試してみたのですが・・・これだけの情報では判断が難しいとは思いますが、他に何か原因は考えられますでしょうか?
- kosa
- ベストアンサー率25% (379/1464)
NO.1さんの回答が正当だと思います。 あとは単純に print "<input type=button name=submit value=保存 onclick=submit();>\n"; のように’すらつけない方法
補足
ご返答ありがとうございます。まとめて補足を書かせて頂きます。No1の方とNo2の方がおっしゃる通り¥を挿入してやってみたのですが、まだ表示しないということは、他に原因があるのでしょうか?その記述を加えるまではうまく動いていたので、そこが原因かなと思ったのですが。一部記述を載せますので、もし原因が分かればお願い致します。 print "<td valign=top>\n"; print "<form action='update.pl' method='POST' onsubmit='return false\;'>\n"; print "<input type='hidden' name='pass' value=$pass>\n"; print "<input type='button' name='submit' value='再保存' onclick='submit()\;'>\n"; print "</td>\n"; \の使い方が違っていたら詳しくご教授願います。エラーはステータスバーに表示され、ページ自体がとびません。
- marimo_cx
- ベストアンサー率25% (873/3452)
特殊キャラクタの前に¥(バックスラッシュ)を付けて下さい。
お礼
ご返答ありがとうございます!!逆に使っても良いのですね。やっと原因がわかりました。実はname='submit'の部分が変更されてなかったことが原因だったようで、そこを取り合えずname='button'に変更したら出来ました。でも、\を利用したり、'を省略したり、"と'を逆に利用したり、いろいろ勉強になりました。どうもありがとうございました。