小编典典

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

all

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

有什么帮助吗?


阅读 61

收藏
2022-06-29

共1个答案

小编典典

在 IE 中,您可以使用

event.returnValue = false;

达到同样的效果。

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

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

您可以将两者结合起来:

event.preventDefault ? event.preventDefault() : (event.returnValue = false);
2022-06-29