如何让preventDefault适用于所有浏览器?

时间:2015-02-07 22:14:35

标签: javascript html firefox

我遇到了event.preventDefault的奇怪问题。这在Chrome上工作正常,但不适用于Firefox。我知道很多人通过添加这样的事件arg来修复它:myFunction(事件),但这样做会使它停止在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>

1 个答案:

答案 0 :(得分:0)

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

&#13;
&#13;
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);
&#13;
<form action="#" id="form">
  <input id="input" type="submit">
</form>
&#13;
&#13;
&#13;

这是一个有用的tutorial