1. ホーム
  2. ジャバスクリプト

[解決済み】IEでevent.preventDefault()関数が機能しない。

2022-04-14 08:35:08

質問

以下は私の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で確認しました)。

何かお手伝いできることはありますか?

解決方法は?

IEでは

event.returnValue = false;

を使えば、同じ結果になります。

また、エラーが出ないようにするために、preventDefaultの存在をテストすることができます。

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

と組み合わせることができます。

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