我希望这个链接有一个JavaScript对话框,询问用户"Are you sure? Y/N".
<a href="delete.php?id=22">Link</a>
如果用户单击"是",则应加载链接,如果单击"否",则不会发生任何事情.
我知道如何在表单中做到这一点,使用onclick
运行返回true
或false
的函数.但是我如何使用<a>
链接来实现这一点呢?
我希望这个链接有一个JavaScript对话框,询问用户"Are you sure? Y/N".
<a href="delete.php?id=22">Link</a>
如果用户单击"是",则应加载链接,如果单击"否",则不会发生任何事情.
我知道如何在表单中做到这一点,使用onclick
运行返回true
或false
的函数.但是我如何使用<a>
链接来实现这一点呢?
以最简单的方式,您可以在内联onclick
处理程序中使用confirm()
函数.
<a href="delete.php?id=22" onclick="return confirm('Are you sure?')">Link</a>
但通常情况下,您希望separate your HTML and Javascript,所以我建议您不要使用内联事件处理程序,而是在链接上放置一个类,并向其添加一个事件侦听器.
<a href="delete.php?id=22" class="confirmation">Link</a>
...
<script type="text/javascript">
var elems = document.getElementsByClassName('confirmation');
var confirmIt = function (e) {
if (!confirm('Are you sure?')) e.preventDefault();
};
for (var i = 0, l = elems.length; i < l; i++) {
elems[i].addEventListener('click', confirmIt, false);
}
</script>
This example只能在现代浏览器中工作(对于较旧的IE,您可以使用attachEvent()
、returnValue
并提供getElementsByClassName()
的实现,或者使用类似jQuery的库来帮助解决跨浏览器问题).你可以阅读更多关于this advanced event handling method on MDN的知识.
我不想被认为是jQuery的粉丝,但DOM操作和事件处理是浏览器差异最大的两个领域.只是为了好玩,下面是jQuery的样子:
<a href="delete.php?id=22" class="confirmation">Link</a>
...
<!-- Include jQuery - see http://jquery.com -->
<script type="text/javascript">
$('.confirmation').on('click', function () {
return confirm('Are you sure?');
});
</script>