如何使preventDefault适用于所有浏览器

How can I get preventDefault to work for all browsers?

本文关键字:浏览器 适用于 何使 preventDefault      更新时间:2023-09-26

我对event.preventDefault有一个奇怪的问题。这在Chrome上运行良好,但在Firefox上不起作用。我知道很多人通过添加这样的事件参数来修复它:myFunction(event),但这样做会使它在Chrome和Firefox上都停止工作。有人能帮我在所有浏览器上运行这些代码吗?

 <script type="text/javascript">
        function myFunction()
        {
                    var asdf = $('input[name=payment_type]:checked', '#buy').val()
                    if (asdf == 'theRightOne') {
                        event.preventDefault()      
                   alert("stuff")
                    } 
        }
      </script>

并非所有浏览器都符合W3C,因此它们有时会以不同的方式处理事件。以下内容应适用于大多数浏览器:

function eventHandler(e) {
  console.log('click event:', e);
  if (e.preventDefault) {
    e.preventDefault();
  } else {
    e.returnValue = false;
  }
}
function formSubmitDefault(e) {
  console.log('form submit event:', e);
}
document.getElementById('input').onclick = eventHandler;
document.getElementById('form').addEventListener('submit', formSubmitDefault);
<form action="#" id="form">
  <input id="input" type="submit">
</form>

这里有一个有用的教程。