我想使用事件侦听器来阻止提交按钮的onclick
声明,但是,使用event.preventDefault()
不能按预期工作。如何防止执行onclick语句?
的代码是这样的:
<?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>
预期的行为只是“监听器”将被警告,但在实践中(火狐3.7a5pre),“点击”和“听众”都被惊动了,在给定的顺序。
看来onclick
正在侦听器之前执行,所以event.preventDefault()
不起作用。有没有办法阻止onclick
被执行?
感谢您的回答,这是有帮助的。 – 2010-05-05 08:19:38
+1 - 正在写类似的东西。尝试将'preventDefault()'看作阻止元素的默认操作 - 如果未设置任何事件将会发生的操作。通过'onclick'属性设置一个事件不是设置默认动作,所以'preventDefault()'不会阻止这个处理器被调用。 – 2010-05-05 08:20:41