Javascript 如何防止执行onclick语句?
我想使用一个事件侦听器来阻止submit按钮的Javascript 如何防止执行onclick语句?,javascript,Javascript,我想使用一个事件侦听器来阻止submit按钮的onclick语句,但是,使用event.preventDefault()无法正常工作 代码如下所示: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <htm
onclick
语句,但是,使用event.preventDefault()
无法正常工作
代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="application/x-javascript">
function addListener() {
document.getElementById("submit").addEventListener("click",
function(ev) {
alert("listener");
ev.preventDefault();
},
false);
}
</script>
<title></title>
</head>
<body onload="addListener();">
<form id="form" method="post" target="">
<input type="submit" id="submit" onclick="alert('onclick')" value="test" />
</form>
</body>
</html>
函数addListener(){
document.getElementById(“提交”).addEventListener(“单击”,
功能(ev){
警惕(“听众”);
ev.preventDefault();
},
假);
}
预期的行为只有“listener”会被提醒,但实际上(Firefox 3.7a5pre),“onclick”和“listener”都会按照给定的顺序被提醒
似乎在侦听器之前执行了onclick
,因此event.preventDefault()
不起作用。有没有办法阻止执行onclick
?onclick
属性等)和DOM2处理程序(通过attachEvent
/addEventListener
动态添加)彼此独立
您唯一能做的就是删除DOM0处理程序(通过为属性分配一个空字符串),然后只使用DOM2处理程序
您可以在删除DOM0处理程序之前从属性中检索它,并将其重新注册为DOM2处理程序。您会遇到一些浏览器不一致的情况(一些会给您一个函数
对象,另一些会给您一个字符串),但这些问题在代码中很容易处理。您可以尝试以下方法:
function addListener() {
document.getElementById("submit").addEventListener("click",
function(ev) {
alert("listener");
ev=ev¦¦event;
ev.preventDefault? ev.preventDefault() : ev.returnValue = false;
},
false);
}
谢谢你的回答,这很有帮助。+1-正在写类似的东西。尝试将
preventDefault()
视为阻止元素的默认操作—如果未设置任何事件,将发生的操作。通过onclick
属性设置事件不会设置默认操作,因此preventDefault()
不会阻止调用该处理程序。这在Firefox上也会产生相同的效果…。您的代码只解决了旧浏览器的兼容性问题“单击”处理程序中命令列表末尾的代码>。当您使用addEventListener('click',handler(){})时,您的click事件将被触发;这是事件捕获和触发部分-(MS还定义了事件冒泡阶段)-如果您在注册处理程序后找到强制事件“取消执行”的方法,我有兴趣了解它