-3
<form action='#' method='post' onclick=' ConfirmChoice(); 
return false;' style='display:inline-block;'>
<input type='hidden' name='delete_dish' value='" . $row['dishname'] . "'>
<input type='image' src='images/delete2.png' alt='Submit' name='delete2' value='delete2'>
</form>

$_POSTが別のファイルにいるたびに、それは言うNotice: Undefined index: delete_dish

しかし、# の代わりに削除onclick=' ConfirmChoice(); return false;して配置すると、機能します。FILENAME.php

4

2 に答える 2

1

あなたは POST リクエストをまったく行っていません

あなたのコメントの1つから(簡潔にするためにメッセージが変更されたことを確認してください):

<script language="javascript"> 
    <!-- Confirm Dialog Box for deletion --> 
    function ConfirmChoice() { 
        answer = confirm("Are you sure?")
        if (answer !=0) { 
            location = "recipe7.php" 
        }
    } 
</script>

つまり、質問での使用方法を考えると、ユーザーがフォーム内の何かをクリックするとすぐに、次の2つのうちの1つだけが発生することをlocation意味します。document.location

  • 何もない
  • ユーザーがリダイレクトされますrecipe7.php

ワーキングソリューション

<script language="javascript"> 
    function ConfirmChoice() { 
        return confirm("Are you sure?");
    }
</script>
<form action='recipe7.php' method='post' onsubmit='return ConfirmChoice();' >
    <input type='hidden' name='delete_dish' value='" . $row['dishname'] . "'>
    <input type='image' src='images/delete2.png' alt='Submit' name='delete2' value='delete2'>
</form>

2 つの違いは次のとおりです。

  • 送信するはずの場所にフォームを送信する
  • クリックではなく、onsubmit を使用してユーザーにプロンプ​​トを表示します。

フォームの送信時のコールバックが falsey を返す場合、フォームの送信は中止されます。

追加ポイント

JavaScript のコメント

形式は次のとおりです。

// this is a comment
/* this is a 
multiline
comment */

<!-- asdf -->JavaScript ブロックでのHTML コメント ( ) の使用は無効です。

デフォルトで js がなくても動作するようにします。

必要のないときに js を有効にした場合にのみ機能する機能を作成すると、複雑さが増すだけです。代わりに、js なしで動作するようにしてから、必要な (最小限の) js 機能を後で追加します。

この原則に固執すると、次の 2 つの結果が生じます。

  • Js ロジックはより単純です (少ないため)
  • js エラーが発生した場合でも動作します。
于 2013-07-20T10:31:04.777 に答える
0

変化する

onclick=' ConfirmChoice(); return false;'

onclick='return ConfirmChoice();'

これを試してみてください....

<form name='myform' action='recipe7.php' method='post' onclick=' ConfirmChoice(); 
return false;' style='display:inline-block;'>                
function ConfirmChoice()
{
  var r = confirm("Are you sure?");
  if(r == true)
  {
    document.myform.submit();
     return true;
  } 
  else
  {
     // do something
     return false;
  }
}
于 2013-07-20T10:17:18.710 に答える