表单 onsubmit="" 确认 window 无效

Form onsubmit="" with confirm window not working

在我的站点上,应该可以从数据库中删除特定数据,但您只能删除您创建的数据。如果您查看一些数据,我的 php 代码会检查您登录的帐户是否是数据的 "creator-account"。如果是,它会显示一个按钮来删除数据。

if ($_SESSION['userID'] == $creatorID) {
  echo
    '<form onsubmit="return confirm("Do you really want to delete this entry?");" class="c-inline" action="delete.php" method="post">
      <input name="query" type="hidden" value ="'. $id .'"/>
      <button id="btnDelete" type="submit" class="btn btn-danger" name="button" title="Eintrag löschen">
        <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Löschen
      </button>
    </form>';
}

问题是,当您按下按钮时,它应该询问您是否真的要删除数据,但它没有。该消息没有显示,我立即被重定向到 delete.php

知道为什么我的 onsubmit="" 被忽略了吗?

你的问题是你使用的引号有点错误。对 onsubmit 属性和内部函数使用双引号,这会中断引号。所以你的 onsubmit 只看到 return confirm( (因为在那之后是你打开该属性的同类引号)。用单引号替换内部双引号;但它们必须被转义(因为你 echo 这个字符串)。

<?php 
if ($_SESSION['userID'] == $creatorID) {
  echo
    '<form onsubmit="return confirm(\'Do you really want to delete this entry?\');" class="c-inline" action="delete.php" method="post">
      <input name="query" type="hidden" value ="'. $id .'"/>
      <button id="btnDelete" type="submit" class="btn btn-danger" name="button" title="Eintrag löschen">
        <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Löschen
      </button>
    </form>';
}

一个更具可读性的替代方法是退出 PHP 模式,并将其输出为纯 HTML。这样你就可以使用单引号而不必转义它们。

<?php 
if ($_SESSION['userID'] == $creatorID) {
  ?>
  <form onsubmit="return confirm('Do you really want to delete this entry?');" class="c-inline" action="delete.php" method="post">
      <input name="query" type="hidden" value ="<?= $id ?>"/>
      <button id="btnDelete" type="submit" class="btn btn-danger" name="button" title="Eintrag löschen">
        <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Löschen
      </button>
    </form>
    <?php 
}