如何防止onclick方法中的默认设置?我有一个传递自定义值的方法
<a href="#" onclick="callmymethod(24)">Call</a>
function callmymethod(myVal){
//doing custom things with myVal
//here I want to prevent default
}
Answers:
让您的回调返回false并将其传递给onclick处理程序:
<a href="#" onclick="return callmymethod(24)">Call</a>
function callmymethod(myVal){
//doing custom things with myVal
//here I want to prevent default
return false;
}
但是,要创建可维护的代码,您应该避免使用“内联Javascript”(即直接位于元素标签内的代码),并通过包含的Javascript源文件(称为Unobtrusive Javascript)修改元素的行为。
标记:
<a href="#" id="myAnchor">Call</a>
代码(单独的文件):
// Code example using Prototype JS API
$('myAnchor').observe('click', function(event) {
Event.stop(event); // suppress default click behavior, cancel the event
/* your onclick code goes here */
});
preventDefault,问题是如何“防止默认点击”。
我认为答案是错误的!他问event.preventDefault();你什么时候简单地返回false;它也调用event.preventDefault();AND event.stopPropagation();!
您可以这样解决:
<a href="#" onclick="callmymethod(event, 24)">Call</a>
function callmymethod(e, myVal){
//doing custom things with myVal
//here I want to prevent default
e = e || window.event;
e.preventDefault();
}
window.event并不总是在所有浏览器中都可用。
试试这个(但请对这样的情况下使用的按钮,如果你没有一个有效href的价值优雅降级)
<a href="#" onclick="callmymethod(24); return false;">Call</a>
return false;吗?我们什至还返回false?
您可以捕获事件,然后使用preventDefault()将其阻止-与纯Javascript一起使用
document.getElementById("xyz").addEventListener('click', function(event){
event.preventDefault();
console.log(this.getAttribute("href"));
/* Do some other things*/
});
将所有html页面中的功能用法更改为会太繁琐return false。
因此,这是一个仅对功能本身进行修补的经过测试的解决方案:
function callmymethod(myVal) {
// doing custom things with myVal
// cancel default event action
var event = window.event || callmymethod.caller.arguments[0];
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
return false;
}
这样可以正确地防止IE6,IE11和最新的Chromehref="#"在onclick事件处理程序完成后访问。
学分:
onLoaded为no wrap。或者直接编写您自己的.html标记。