一尘不染

JavaScript event.preventDefault()函数在IE中不起作用

javascript

以下是我的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发现)的情况下支持该方法。

有帮助吗?


阅读 808

收藏
2020-04-25

共1个答案

一尘不染

在IE中,您可以使用

event.returnValue = false;

达到相同的结果。

为了不出错,您可以测试一下preventDefault的存在:

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

您可以将两者结合使用:

event.preventDefault ? event.preventDefault() : (event.returnValue = false);
2020-04-25