如何使用onclick以形式发布变量[关闭]

<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>

Everytime I $_POST on another file, it says Notice: Undefined index: delete_dish

But, when I remove onclick=' ConfirmChoice(); return false; and put FILENAME.php instead of #, it works.

You aren't making a POST request at all

From one of your comments (confirm message changed for brevity):

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

Assuming that location means document.location: This will mean given how it's used in the question, that as soon as a user clicks on anything in the form only one of two things will happen:

  • Nothing
  • User is redirected to recipe7.php

Working solution

<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>

The two differences are:

  • Make the form submit to where it's supposed to submit
  • Use onsubmit to prompt the user, not on click.

If a form onsubmit callback returns falsey - submitting the form is aborted.

Additional points

Comments in javascript

are of the form:

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

Using html comments (<!-- asdf -->) in a javascript block is not valid.

Make things work without js by default.

Writing functionality that only works with js enabled when it's not necessary - just adds complexity. Instead make it work without js - and then add whatever js functionality you want (the minimum) to it afterwards.

Sticking to this principle will have two concequences:

  • Js logic is simpler (because there's less of it)
  • If there's a js error things still work.

change

onclick=' ConfirmChoice(); return false;'

to

onclick='return ConfirmChoice();'

Try this one....

<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;
  }
}