【问题标题】:Confirm Before Form Submission提交表格前确认
【发布时间】:2016-09-20 11:49:19
【问题描述】:

我创建了一个 PHP 页面以从我的数据库中删除。这个 PHP 页面是一个表单提交的动作。通过单击“X”符号的图片提交表单。 如何在提交表单之前要求用户确认,然后从我的数据库中删除?

这是我的代码:

<form method='POST' action='delete.php'><input type='image' src='images/delete.png' class='del' alt='Submit Form' />

我尝试通过将它添加到我的表单标签来内联,但它不起作用:

onsubmit="return confirm('Are you sure you want to submit this form?');"

【问题讨论】:

  • 对按钮使用onclick,而不是在表单中使用onsubmit
  • 如果您想确定是否要求确认,您需要在服务器端执行一个名为提交的确认页面(一个带有两个按钮表单的新 php 文件和之前输入的调用信息选择“是”时删除.php)。完成此操作后,您可以添加一个带有 ajax 调用的 javascript 层来改善用户体验。这种方法的优点是您的应用可以使用或不使用 javascript。
  • 你显然遗漏了一些重要的代码,以及它是如何被使用的。我希望您不仅只回应“答案”;我们也需要一些反馈。
  • @SaharAlsadah 您标记为“php”,但没有代码支持您的问题。我敢打赌,您在某处呼应了这一点并使用了错误的引号或没有转义单引号。由于您没有向我们展示的内容,每个人的答案都被否决了。顺便说一句,不是我的反对票。编辑:许多人删除了他们的答案。
  • @SaharAlsadah 我的评论很清楚,你还想让我写什么?我现在继续前进。祝你好运。我已经浪费了足够多的时间,就像你为其他所有人所做的那样,包括“你的”。

标签: php html forms


【解决方案1】:

来自 OP 的评论:

echo "onclick='return confirm(\'Are you sure you want to submit this form?\');'"

您不能在用单引号分隔的属性值中使用单引号。

您的选择是:

在 JS 中使用双引号

echo "onclick='return confirm(\"Are you sure you want to submit this form?\");'"

在 HTML 中使用双引号

echo "onclick=\"return confirm('Are you sure you want to submit this form?');\""

使用实体

echo "onclick='return confirm(&quot;Are you sure you want to submit this form?&quot;);\""

当你将 JavaScript 放在 PHP 字符串中的 HTML 属性值中时,你将三种不同的语言混合在一起,你必须非常非常小心地进行转义,以便为正确的语言转义正确的字符正确的时间。

根据经验,最好将 PHP 字符串的内容保持在最低限度。仅当您有变量时才进入 PHP 模式。

?>
    <form method='POST' action='delete.php'>
        <input type='image' src='images/delete.png' class='del' alt='Submit Form' onclick="return confirm('Are you sure you want to submit this form?');" />
    </form>
<?php

出于同样的原因,最好将 JavaScript 保存在外部文件中,并使用 addEventListener 而不是 onFOO 属性附加事件处理程序。

【讨论】:

  • 我将 php 代码从 HTML 标签中分离出来,它可以工作。非常感谢您的详细回复。
【解决方案2】:

这会起作用

  <form method='POST' action='delete.php' onsubmit="return confirm('Are you sure you want to submit this form?');">
<input type='image' src='images/delete.png' class='del' alt='Submit Form' /></form>

【讨论】:

  • 这就是 OP 所说的他们正在做的事情。
  • 如果它对你有用,但对 OP 不起作用,然后告诉他们做他们已经在做的事情并不能解决他们的问题,不是吗?
  • 我想你忘了放 什么的,复制上面的代码并检查它是否适合你
  • 省略结束标签对jsbin.com/faloboveyo/1/edit?html,output工作没有影响
  • 我不知道为什么它似乎不起作用。无论如何,谢谢你的回答。
【解决方案3】:

如果您在您的网站上使用 jQuery,这是最好的解决方案。

方法 jQuery

您的 HTML:

<form class="sendingForm" method='POST' action='delete.php'> 
    <input type='image' src='images/delete.png' class='del' alt='Submit Form' />
</form>

所以我给一个类:sendingForm

您的 JavaScript 部分:

$(".sendingForm").submit(function() {
    if (confirm("Please confirm!")) return true;
    else return false;       
});


您可以查看:http://jsfiddle.net/d6gem0ty/

内联方法

最短的解决方案可能更容易。这里只有 HTML 和一个 onclick 事件。

<form class="sendingForm" method='POST' action='delete.php'>
<input onclick="return confirm('Please confirm!')"  type='image' src='images/delete.png' class='del' alt='Submit Form' />

您可以查看:http://jsfiddle.net/d6gem0ty/1/

【讨论】:

    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 2011-09-23
    • 2020-01-03
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2014-09-22
    相关资源
    最近更新 更多