1

这是Javascript代码,仅供测试:

<script type="text/javascript">
    function show_confirm()
        {
            var r=confirm("Are you sure?");
            if (r==true)
            {                   
            }
            else
            {                    
            }
        } 
</script>

这是php代码:

<form action="Test.php" method="post">
    <input type="text" name="test"/>
    <input type="submit" value="submit" onclick="show_confirm()"/>
</form>

所以如果点击提交按钮,会弹出一个确认框。如果单击“确定”按钮,页面将被重定向到 Test.php 并执行 post 方法,就像正常的 php 页面提交操作一样。否则,如果单击“取消”按钮,我希望它保持在同一页面并且不会执行发布方法。请问这个功能可以实现吗?如何修改代码?我知道 PHP 用于服务器,JS 用于客户端。我不确定我是否可以像这样混合它们。或者我应该使用 Ajax?感谢帮助!

4

4 回答 4

3

您可以直接从按钮执行此操作。return false将取消提交……所以……

<input type="submit" onclick="javascript:return confirm('Are you sure?');">

如果用户单击“确定”,对话框将返回 true,否则返回 false。

在这里要完整,它是函数形式。

function show_confirm()
{
  var r = confirm("Are you sure?");
  if(r == true)
  {
     // do something
     return true;
  } else {
     // do something
     return false;
  }
}

编辑:将近 4 年后读到这篇文章,我不得不改变它。

function show_confirm()
{
  var r = confirm("Are you sure?");
  if(r)
  {
     // do something for true
  } else {
     // do something for false
  }
  return r;
}

调用它<input type="submit" onclick="javascript:return show_confirm();">

我相信这也将处理未选择任何内容但对话框已关闭的情况。

注意:应避免使用内联事件侦听器。使用 Javascript 附加事件侦听器。

于 2011-08-16T15:49:03.143 回答
3

最好的方法如下:

<script>
    function show_confirm(){
        return confirm("Are you sure?");
    }
</script>
<input type="submit" onclick="return show_confirm();">

我直接使用 show_confirm 而不是内置函数的原因是,如果你想更改确认弹出窗口的功能,如果你在代码中的任何地方都使用内置函数,那就更难了。

抽象出这种功能并编写清晰、简单的代码会让你成为一个更好的程序员:)


警告:正如我在下面的评论中所指出的,这仅在用户明确单击提交按钮时才有效。如果用户通过其他方式提交表单,则不会显示确认框。如果您想显示确认,无论表单是如何提交的,请参阅http://www.w3schools.com/jsref/event_form_onsubmit.asp 。

于 2011-08-16T16:13:59.803 回答
0
<script type="text/javascript">
    function show_confirm()
        {
            var r=confirm("Are you sure?");
            if (r==true)
            {     
                 document.location.href= 'page.php';              
            }
            else
            {                    
                 return false;
            }
        } 
</script>
于 2011-08-16T15:50:28.900 回答
0

进一步简化 rlemon 的答案(不需要javascript:return, 也修复了内部双引号):

<input type="submit" onclick="return confirm('Are you sure?')" />
于 2011-08-16T16:05:15.380 回答