2つのFORMで、入力フォームを兼用にするには?

[上に] [前に] [次に]
茶しぶ男 2000/03/16(木) 16:29:36
<FORM METHOD=POST ACTION="xxxxx.cgi">
<INPUT TYPE=HIDDEN NAME=action VALUE=edit>
パスワード<INPUT TYPE=password NAME=pwd SIZE=10>
<INPUT TYPE=submit VALUE="修正">
</FORM>
<FORM METHOD=POST ACTION="xxxxx.cgi">
<INPUT TYPE=HIDDEN NAME=action VALUE=remove>
パスワード<input type=password name=pwd size=10>
<input type=submit value="削除">
</FORM>

このようにパスワードが必要なフォームが2つ並んでいるのですが、
レイアウト的に美しくないのでパスワードのフォームを兼用にしたい
(つまり<INPUT TYPE=password …>をひとつにしたい)
と思っています。

どのようにしたら実現できるでしょうか?

Syn [E-Mail] 2000/03/16(木) 16:54:08
JavaScript を使ってよければ、

<FORM METHOD=POST ACTION="xxxxx.cgi"
    name="modifyform"
>
<INPUT TYPE=HIDDEN NAME=action VALUE=edit>
パスワード<INPUT TYPE=password NAME=pwd SIZE=10>
<INPUT TYPE=submit VALUE="修正">
</FORM>
<FORM METHOD=POST ACTION="xxxxx.cgi"
    name="deleteform"
    onsubmit="document.forms['deleteform'].elements['pwd'].value = document.forms['modifyform'].elements['pwd'].value;"
>
<INPUT TYPE=HIDDEN NAME=action VALUE=remove>
<input type=hidden name=pwd>
<input type=submit value="削除">
</FORM>

ってなかんじでどうでしょう。

ポケ鬼!! 2000/03/16(木) 17:00:14

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html40/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<link rev="made" title="ポケ鬼!!" href="mailto:foo@boo.hoo">
<link rel="prev" title="" href="http://www.boo.hoo/~foo/">
<title>フォームの兼用サンプル</title>
<script type="text/javascript" defer="defer">
<!--
function remove(obj) {
    obj.action.value = "remove";
}
//-->
</script>
</head>
<body>
<form method="post" action="xxxx.cgi">
<dvi>
<input type="hidden" name="action" value="edit">
パスワード<input type="password" name="pwd" size="10">
<input type="submit" value="修正">
<input type="submit" value="削除" onclick="remove(this.form);">
</div>
</form>
</body>
</html>

ポケ鬼!! 2000/03/16(木) 17:05:39
 書いてて一つ気になったのですが、actionというパラメータの名前がform要素のaction属性と被っているので、もしかしたら仕様的には問題があるのかもしれないです。obj.actionという部分が被ってしまうので、modeとかに変更したほうがベターかも。

無責任官庁 2000/03/16(木) 17:06:09
<FORM METHOD=POST ACTION="xxxxx.cgi">
パスワード<INPUT TYPE=password NAME=pwd SIZE=10>
<INPUT TYPE=submit VALUE="修正" NAME="submit_edit">
<INPUT TYPE=submit VALUE="削除" NAME="submit_delete">
</FORM>

CGIが同一のもので、HIDDENデータのaction を見て処理分けしてると
思っていいんですよね。
そしたら上記のようにして、submit_editにデータがあれば修正、
submit_deleteにデータがあれば削除、としてはどうでしょうか。
単純に NAME を付ければ、submitボタンであろうとvalueは送信されますよ。

こちらはスクリプトを使用しない場合…ですね。

茶しぶ男 2000/03/16(木) 17:46:56
[[解決]]
いろいろ案を出してくださり、皆さんありがとうございました。
今回は、Synさんの案で行く事にしました。
WindowsのNN4.5、IE5で確認済です。

[上に] [前に] [次に]