Javascript 单击<;时如何显示确认对话框;a>;链接
我希望这个链接有一个JavaScript对话框,询问用户“你确定吗?是/否”Javascript 单击<;时如何显示确认对话框;a>;链接,javascript,html,dom-events,Javascript,Html,Dom Events,我希望这个链接有一个JavaScript对话框,询问用户“你确定吗?是/否” 如果用户单击“是”,则应加载链接,如果单击“否”,则不会发生任何事情 我知道如何在表单中使用onclick运行返回true或false的函数。但是如何使用链接实现这一点?内联事件处理程序 以最简单的方式,您可以在内联onclick处理程序中使用该函数 <a href="delete.php?id=22" onclick="return confirm('Are you sure?')">Link<
如果用户单击“是”,则应加载链接,如果单击“否”,则不会发生任何事情
我知道如何在表单中使用onclick
运行返回true
或false
的函数。但是如何使用
链接实现这一点?内联事件处理程序
以最简单的方式,您可以在内联onclick
处理程序中使用该函数
<a href="delete.php?id=22" onclick="return confirm('Are you sure?')">Link</a>
我建议避免使用在线JavaScript:
var aElems = document.getElementsByTagName('a');
for (var i = 0, len = aElems.length; i < len; i++) {
aElems[i].onclick = function() {
var check = confirm("Are you sure you want to leave?");
if (check == true) {
return true;
}
else {
return false;
}
};
}
上面将函数绑定到每个单独链接的事件;当您可以将事件处理(使用委托)绑定到祖先元素时,这可能是非常浪费的,例如:
function reallySure (event) {
var message = 'Are you sure about that?';
action = confirm(message) ? true : event.preventDefault();
}
function actionToFunction (event) {
switch (event.target.tagName.toLowerCase()) {
case 'a' :
reallySure(event);
break;
default:
break;
}
}
document.body.addEventListener('click', actionToFunction);
由于事件处理附加到主体
元素,该元素通常包含大量其他可单击的元素,因此我使用了一个临时函数(actionToFunction
)来确定如何处理该单击。如果单击的元素是一个链接,因此有一个标记名为a
,则单击处理将传递给reallySure()
函数
参考资料:
如果使用addEventListener(或attachEvent)附加事件处理程序,则此方法与上述任一答案略有不同
您可以将此处理程序附加到以下任一项:
document.getElementById('mylinkid').addEventListener('click', myClickHandler, false);
或对于旧版本的internet explorer:
document.getElementById('mylinkid').attachEvent('onclick', myClickHandler);
为了好玩,我将在整个文档中使用一个事件,而不是在所有锚定标记中添加一个事件:
document.body.onclick = function( e ) {
// Cross-browser handling
var evt = e || window.event,
target = evt.target || evt.srcElement;
// If the element clicked is an anchor
if ( target.nodeName === 'A' ) {
// Add the confirm box
return confirm( 'Are you sure?' );
}
};
如果您有许多锚定标记,此方法将更有效。当然,将此事件添加到包含所有锚定标记的容器中时,效率会更高。jAplus
您可以做到这一点,而无需编写JavaScript代码
<head>
<script src="/path/to/jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="/path/to/jquery.Aplus.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
...
<a href="delete.php?id=22" class="confirm" title="Are you sure?">Link</a>
...
</body>
...
...
使用PHP、HTML和JAVASCRIPT进行提示
如果有人想在一个文件中使用php、html和javascript,下面的答案对我很有用。。我附加了引导图标“垃圾”的链接使用
<a class="btn btn-danger" href="<?php echo "delete.php?&var=$var"; ?>" onclick="return confirm('Are you sure want to delete this?');"><span class="glyphicon glyphicon-trash"></span></a>
我之所以使用<强> PHP<强>代码,是因为我从一开始就不能用它…
下面的代码对我不起作用:-
echo "<a class='btn btn-danger' href='delete.php?&var=$var' onclick='return confirm('Are you sure want to delete this?');'><span class='glyphicon glyphicon-trash'></span></a>";
echo”“;
我在第1段代码中对其进行了修改,然后根据需要运行。。我希望我能帮助需要我的人。你也可以试试这个:
<a href="" onclick="if (confirm('Delete selected item?')){return true;}else{event.stopPropagation(); event.preventDefault();};" title="Link Title">
Link Text
</a>
大多数浏览器不显示传递给确认()
的自定义消息
使用此方法,如果用户更改了任何
字段的值,则可以显示带有自定义消息的弹出窗口
您只能将此应用于某些链接,甚至页面中的其他HTML元素。只需将自定义类添加到所有需要确认和应用的链接,并使用以下代码:
$(文档).ready(函数(){
让未保存=错误;
//检测所有输入字段中的更改并设置“未保存”标志
$(“:输入”).change(()=>unsave=true);
//单击时触发弹出窗口
$('.hazard link')。单击(函数(){
if(未保存&&!window.confirm(“您确定要用核武器毁灭世界吗?”)){
return;//用户未确认
}
//没有未保存的更改或用户已确认
window.location.href=$(this.data('destination');
});
});代码>
发射核弹!
真的那么简单吗!我是不是很尴尬!我只是假设它只在表单上工作。确认对话框对每个可点击的元素都有效吗?@t确认对话框本身与特定元素无关。对于这样简单的事情,是否真的需要将HTML和JavaScript分开?如果将这样一个简单而简短的函数保留为内联函数,您会预见到什么问题?@CiaranG它总是这样开始:),然后添加这个和那个,等等。如果您能够实现关注点的分离,那么如果您去掉大多数内联处理程序,您会感觉更干净。它们只是在你的HTML中没有任何作用。至少在我看来,至少在大多数情况下。总有一些特殊情况-懒惰不应该是其中之一。@Ulysnep根据您的说明,在内联处理程序中省略confirm(…)
之后的分号时出现错误。我无法复制,谢谢。短内联确认解决方案有效。你为什么建议避免内联代码?我通常远离内联CSS的原因很明显,但是在短javascript代码段中的原因是什么呢?正是因为同样的原因,内联CSS是不可取的,它更难维护,它会导致更混乱的HTML,如果需求发生变化,则需要进行大量的更新。我同意不使用内联处理程序的观点。但是,如果我们在脚本中附加处理程序,则应该使用高级模型(addEventListener
)+1尽管如此。@bažmegakapa:我……倾向于同意;但是我必须承认,我还没有适应addEventListener()
模型。你可以用if(check==true)
替换if(check)
。如果你关心旧的IE,不要忘了窗口。事件
。谢谢分享,当然你正在使用Javascript,您正在添加一个完整的库来处理一些非常简单的事情。值得吗?我不知道那个库,我会读到它,如果你把它用于其他目的,也许它值得额外的负载…两个库来完成这个简单的事情?我们如何实现@kapa给出的angularjs1.xAns是非常容易的,也不太麻烦。我想调用另一个js方法,它是调用conformation的成功。这是解决我问题的方法。
document.getElementById('mylinkid').addEventListener('click', myClickHandler, false);
document.getElementById('mylinkid').attachEvent('onclick', myClickHandler);
document.body.onclick = function( e ) {
// Cross-browser handling
var evt = e || window.event,
target = evt.target || evt.srcElement;
// If the element clicked is an anchor
if ( target.nodeName === 'A' ) {
// Add the confirm box
return confirm( 'Are you sure?' );
}
};
<head>
<script src="/path/to/jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="/path/to/jquery.Aplus.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
...
<a href="delete.php?id=22" class="confirm" title="Are you sure?">Link</a>
...
</body>
<a class="btn btn-danger" href="<?php echo "delete.php?&var=$var"; ?>" onclick="return confirm('Are you sure want to delete this?');"><span class="glyphicon glyphicon-trash"></span></a>
echo "<a class='btn btn-danger' href='delete.php?&var=$var' onclick='return confirm('Are you sure want to delete this?');'><span class='glyphicon glyphicon-trash'></span></a>";
<a href="" onclick="if (confirm('Delete selected item?')){return true;}else{event.stopPropagation(); event.preventDefault();};" title="Link Title">
Link Text
</a>