Javascript警报点击删除不在IE8中工作

时间:2013-09-30 07:33:36

标签: javascript internet-explorer-8

我有一个JavaScript,当我点击删除时,它会弹出确认,在我删除之前,它在Mozilla Firefox和Google Chrome中运行良好。但是当我点击IE8中的删除时会弹出显示确认信息,当文件被删除时,它会拒绝删除。有没有人为此工作?这是我在下面的代码段

触发

<?php echo '<td><a href="delete.php?staff_id=' . $row['staff_id'] . '"><input type="button" onclick="confirmDelete(event)" value="delete"></a></td>'; ?></td>

删除确认代码段          

function confirmDelete(e) {
 if(confirm('Are you sure you want to delete this Record?'))
   alert('Record Deleted !');
 else {
  alert('Cancelled !');
  e.preventDefault();
 }
}
</script>

3 个答案:

答案 0 :(得分:2)

我认为IE 8不喜欢你的&lt; input&gt;标签内的链接。您可以将onclick处理程序添加到“&lt; a&gt;” - 标记:

<?php echo '<td><a href="delete.php?staff_id=' . $row['staff_id'] . '" onclick="confirmDelete(event)">Delete</a></td>'; ?>

BTW:你有两个“&lt; / td&gt;”,一个在php-block之外。

修改

第二个想法:由于删除操作会更改应用程序的状态,因此最好“POST”数据。所以更好的方法是:

<form action="delete.php" method="post" onsubmit="confirmDelete(event)">
<div>
    <input type="hidden" name="staff_id" value="<?php echo $row['staff_id']; ?>" />
    <input type="submit" name="submit" value="Delete" />
</div>
</form>

在PHP中,您可以通过$ _POST ['staff_id']访问staff_id。

编辑2:

更新了javascript,两种方法(链接和按钮):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>test</title>
<script type="text/javascript">
//<![CDATA[
function confirmDelete() {
    if (!confirm('Delete?')) {
        return false;
    }
    return true;
}
//]]>
</script>
</head>
<body>
    <h1>Version 1 (link)</h1>
    <div>
        <a href="delete.php?staff_id=1" onclick="return confirmDelete()">Delete</a>
    </div>

    <h1>Version 2 (button)</h1>
    <form action="delete.php" method="post" onsubmit="return confirmDelete()">
    <div>
        <input type="hidden" name="staff_id" value="<?php echo $row['staff_id']; ?>" />
        <input type="submit" name="submit" value="Delete" />
    </div>
    </form>
</body>
</html>

在IE 7-10&amp; FF。

此致

答案 1 :(得分:1)

这是因为FF和IE以不同的方式使点击事件冒泡。

问题是你的按钮位于标签内,它有自己的点击处理程序。

你应该尝试这样的事情:

<a href="delete.php?id=1" onclick="confirmDelete(event)">delete</a>

甚至更简单:

<a href="delete.php?id=1" onclick="return confirm('Are you sure?')">delete</a>

这将在所有浏览器中以相同的方式工作。

答案 2 :(得分:0)

当我们从数据库中删除任何内容时,您也可以使用两次确认消息。这是代码

function confirmDelete() {
    var cont = false;
    cont = confirm('Warning! Delete this membership level?')
    if (!cont) {
        return false;
    }
    cont = confirm('Last Warning! Are you really sure?\nDeleting this membership level cannot be undone!');
    if (!cont) {
        return false;
    }
    return true;
}

<a href="action=delete_level&id=<?php echo $member_level; ?>" onclick="return confirmDelete()">Delete</a>

谢谢..