CMS「すぐ使えるCGI」の開発者がご質問にお答えします

 

「添付ファイル付 ウェブページ更新ツール」のテンプレート 1.html について (No. 449)

回答日: 2008-11-25

質問

テンプレート 1.html でのbodyタグの直後に次のように formタグを置いたところ、編集や新規登録がエラーになってしまいます。

<body>
<form action="abc.cgi" method="post">
<input type="hidden" name="action" value="123">
<input type="hidden" name="id"     value="456">
<input type="hidden" name="pass"   value="789">
<input name="" type="submit" value="メニューへ戻る" class="v">
</form>

<H1>ファイル変更/削除</H1>
<FORM ACTION="admin.cgi" METHOD="post">
  :
  :
</FORM>

既定のFORM文の前に、別のFORM文を置いた場合のエラー回避を教えてください。
よろしくお願いいたします。
投稿日時: 2008-11-25 17:40

回答

新規登録や編集ボタンの動作は、既定の <FORM> が <BODY> に次いで現れるという前提で、以下のように JavaScript で指定してあります。

=========================================
<script type="text/javascript"><!--
function set_param(d,m,s){
    document.forms[0].s.value = s;
    document.forms[0].d.value = d;
    document.forms[0].m.value = m;
}
// --></script>
=========================================

上記コードは templates/admin/1.html の HTML ヘッダが終わる直前に記載されています。
「 forms[0] 」というのが「一番最初に現れる <FORM> 」を指定していますので、この部分を変更して下さい。

お送りいただいたコードですと既定の <FORM> は2番目に現れますので、それを表す表現は「 forms[1] 」となります。

以下のように変更して動作をお試しください。

=========================================
<script type="text/javascript"><!--
function set_param(d,m,s){
    document.forms[1].s.value = s;
    document.forms[1].d.value = d;
    document.forms[1].m.value = m;
}
// --></script>
=========================================
回答日: 2008-11-25