echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm(''are you sure you wish to delete this record'');'>delete</a></td>";
以上是我尝试使用的代码。每次它什么都不做,我看不出如何使用"适当的"JavaScript方法。原因是什么?
GET 方法更改状态也是一个坏主意 - 查看何时使用 GET 以及何时使用 POST 的指南(http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist (
我认为$row[id]在您的echo语句中没有正确评估。试试这个:
echo "<td><a href='delete.php?id={$row[id]}&&category=$a'...
请注意波浪形括号。
但这更容易阅读:
?><td><a href="delete.php?id=<?=$row[id];?>&category=<?=$a;?>" onclick="return confirm('are you sure you wish to delete this record');">delete</a></td><?
顺便说一句,在js中添加一个函数来处理确认:
function confirm_delete() {
return confirm('Are you sure you want to delete this record?');
}
然后,您的onclick方法可以return confirm_delete()
。
只是一个建议,你使用的是框架吗?
我使用MooTools,然后简单地将此脚本包含在HTML中
confirm_delete.js
window.addEvent('domready', function(){
$$('a.confirm_delete').each(function(item, index){
item.addEvent('click', function(){
var confirm_result = confirm('Sure you want to delete');
if(confirm_result){
this.setProperty('href', this.getProperty('href') + '&confirm');
return true;
}else{
return false;
}
});
});
});
它所做的只是找到任何带有 class="confirm_delete" 的"a"标签,并附加与您的脚本相同的代码,但我发现它更容易使用。它还向地址添加一个确认变量,以便在 JavaScript 关闭时,您仍然可以将它们发送到带有确认提示的屏幕。
你应该尽量把你的JavaScript和你的HTML分开。最初输出原版 HTML,然后将事件添加到链接中。
printf('<td><a id="deleteLink" href="delete.php?id=%d&category=%s">Delete</a></td>', $row["id"], $a);
然后是页面上某处的一些JavaScript代码:
document.getElementById('deleteLink').onclick = function() {
return confirm("Are you sure you wish to delete?");
};
但是,从您的示例中,看起来您可能有一个包含多行的表,每行都有自己的删除链接。这使得使用这种样式更具吸引力,因为您不会一遍又一遍地输出confirm(...)
文本。
如果是这种情况,您显然不能在链接上使用id
,因此最好使用类。 <a class="deleteLink" ...
如果你使用的是JavaScript库,比如jQuery,这很容易:
$('.deleteLink').click(function() {
return confirm("...");
});
echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm("are you sure you wish to delete this record");'>delete</a></td>";
使用Firefox的HTML语法突出显示来发挥您的优势。
另一种解决方案:
echo '<td><a href="delete.php?id=' . $row[id] . '&category=' . $a . '" onclick="return confirm(''are you sure you wish to delete this record?'');'>delete</a></td>';
我将双引号更改为单引号,反之亦然。然后我连接了变量,因此 PHP 不需要评估。
另外,我不确定当用户单击否时,onclick的返回是否真的会阻止链接被"单击"。
如果你坚持使用echo-thing:
echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm('''are you sure you wish to delete this record''');'>delete</a></td>";
-- 因为转义是从 PHP 解释器处理的!-(
这是我用于相同类型的东西。
我不回显/打印它,我会把html放在?>html之间
?> <td><a href="?mode=upd&id=<?= $row[id] ?>&table=<?= $table ?>">Upd</a> / <a href="?mode=del&id=<?= $row[id] ?>&table=<?= $table ?>" onclick="return confirm('Are you sure you want to delete?')">Del</a></td> <?php