表单onsubmit =“”,确认窗口不起作用

时间:2017-03-31 13:41:30

标签: php html forms onsubmit

在我的网站上,应该可以从数据库中删除特定数据,但您只能删除您创建的数据。如果您查看一些数据,我的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>';
}

问题是,当您按下按钮时,它应该询问您是否确实要删除数据,但事实并非如此。该消息未显示,我立即被重定向到delete.php

我的onsubmit=""被忽略的任何想法?

1 个答案:

答案 0 :(得分:2)

您的问题是您使用引号有点不对劲。对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 
}