为了账号安全,请及时绑定邮箱和手机立即绑定

事件()函数在IE中不起作用

事件()函数在IE中不起作用

交互式爱情 2019-06-17 17:12:32
事件()函数在IE中不起作用下面是我的JavaScript(Mootools)代码:$('orderNowForm').addEvent('submit', function (event) {     event.preventDefault();     allFilled = false;     $$(".required").each(function (inp) {         if (inp.getValue() != '') {             allFilled = true;         }     });     if (!allFilled) {         $$(".errormsg").setStyle('display', '');         return;     } else {         $$('.defaultText').each(function (input) {             if (input.getValue() == input.getAttribute('title')) {                 input.setAttribute('value', '');             }         });     }     this.send({         onSuccess: function () {             $('page_1_table').setStyle('display', 'none');             $('page_2_table').setStyle('display', 'none');             $('page_3_table').setStyle('display', '');         }     });});在除IE之外的所有浏览器中,这都很好。但是在IE中,这会导致一个错误。我有IE8,所以在使用它的JavaScript调试器时,我发现event对象没有preventDefault方法,该方法导致错误,因此正在提交表单。在Firefox(我使用Firebug发现的)情况下,该方法得到了支持。有什么帮助吗?
查看完整描述

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

在IE中,您可以使用

event.returnValue = false;

达到同样的结果。

为了避免出错,您可以测试是否存在防范性缺陷:

if(event.preventDefault) event.preventDefault();

你可以将两者结合起来:

event.preventDefault ? event.preventDefault() : (event.returnValue = false);


查看完整回答
反对 回复 2019-06-17
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

我知道这是一个相当老的职位,但我只是花了一些时间试图使这个工作在IE8。

在IE8版本中似乎存在一些差异,因为这里发布的解决方案和其他线程中的解决方案对我不起作用。

假设我们有这样的代码:

$('a').on('click', function(event) {
    event.preventDefault ? event.preventDefault() : event.returnValue = false;});

在我的IE8里preventDefault()方法存在是因为jQuery,但不起作用(可能是因为下面这一点),因此这将失败。

即使我returnValue属性直接变为false:

$('a').on('click', function(event) {
    event.returnValue = false;
    event.preventDefault();});

这也不起作用,因为我只是设置了jQuery自定义事件对象的一些属性。

只有对我有效的解决方案是设置属性。returnValue全局变量 event就像这样:

$('a').on('click', function(event) {
    if (window.event) {
        window.event.returnValue = false;
    }
    event.preventDefault();});

只是为了让那些试图说服IE8工作的人变得更容易。我希望IE8很快就会在痛苦的死亡中可怕地死去。

最新情况:

SV in指出,你可以用event.originalEvent获取原始事件对象并设置returnValue原始属性中的属性。但我还没有在IE8中测试过它。


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 444 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信