我想使用事件偵聽器來阻止提交按鈕的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