単一レコードのデータベースからデータを編集するために使用される、PHPで生成されたHTML4移行ページがあります。ユーザーには、変更を保存するか、レコードを削除するかの2つのオプションがあります。コントロール付きのフォームを使用します(一部は非表示になっています):
<form method="post" action="object_mod.php"><!-- this is another file -->
<!-- inputs follow -->
私は2つのアクションを処理したいので、すなわち。レコードを削除または保存するフォームの</FORM>
タグの前に2つの送信ボタンを配置しました。
<input type="submit" id="btnSubmit" value="Save">
<input type="submit" id="btnDelete" value="Delete">
</form>
ユーザーが削除を確認する必要があるため、次のonclick
イベントを追加しました。
<input type="submit" id="btnDelete" value="Delete" onclick="javascript:deleteRecordConfirm();">
javascript:
(ともなしで試しonclick="javascript:deleteRecordConfirm(); return true;"
ました)が、フォームを送信しません。
JS機能は
function deleteRecordConfirm(){
if(confirm('Are you sure to delete?')){
document.getElementById("field_action").value=-1;
//document.forms[0].submit();
return true;
}
}
これfield_action
は-1に設定されているので、object_mod.phpで、レコードを保存するのではなく削除したいことがわかります。
ここで質問に行きます、なぜこのフォームは削除時に送信されないのですか?
ユーザーがJavascriptを無効にして、確認がなくてもフォームを送信できないようにするとよいと思います。そのため<INPUT TYPE="submit">
、削除に使用します。それは良い考えですか?私は、2つの独立したフォーム(実際には、削除にはレコードIDを持つ1つの非表示フィールドのみが必要です)に独自の送信ボタンを指定することを考えていました。1つは削除用、もう1つは保存用です。
実際、このページはある種のイントラネットで機能し、信頼できるユーザーがいて、ハッキングなどを恐れることはありませんが、セキュリティに関するコメントも歓迎します。
(Firefox 19.0でテストしましたが、Javascriptコンソールにエラーは表示されません。w3cバリデーターは有効なページだと言っています)。