Вопрос по javascript, mootools, internet-explorer, events, preventdefault – Функция event.preventDefault () не работает в IE

195

Вот мой код 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).

Любая помощь?

Error: User Rate Limit Exceeded Alsciende
Error: User Rate Limit ExceededThis fiddleError: User Rate Limit Exceededjsfiddle.net eerne
Error: User Rate Limit Exceededmootools.net/docs/core/Native/Event#Event:preventDefaultError: User Rate Limit Exceeded Paolo Bergantino

Ваш Ответ

11   ответов
0

2

function ie8SafePreventEvent(e) {
    if (e.preventDefault) {
        e.preventDefault()
    } else {
        e.stop()
    };

    e.returnValue = false;
    e.stopPropagation();
}

$('a').click(function (e) {
    // Execute code here
    ie8SafePreventEvent(e);
    return false;
})
Error: User Rate Limit ExceededstopError: User Rate Limit Exceeded
.stop()Error: User Rate Limit Exceeded
0

return falseError: User Rate Limit Exceeded

$('orderNowForm').    // your code
    return false;
}
11

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

preventDefault()

returnValue

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

returnValueglobal variable event

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

UPDATE:

event.originalEventreturnValue

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededevent.originalEventError: User Rate Limit Exceededstackoverflow.com/a/16675056/22550 sv_in
0

if(typeof e.preventDefault == 'function'){
  e.preventDefault();
} else {
  e.returnValue = false;
}
457

Error: User Rate Limit Exceeded

event.returnValue = false;

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

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

Error: User Rate Limit Exceeded

event.preventDefault ? event.preventDefault() : (event.returnValue = false);
Error: User Rate Limit ExceededmustError: User Rate Limit Exceeded
event.preventDefault();Error: User Rate Limit Exceeded
event.preventDefault ? event.preventDefault() : event.returnValue = false;
Error: User Rate Limit Exceeded$('.something').click(function(e){ e.preventDefault ? e.preventDefault() : event.returnValue = false; });
Error: User Rate Limit Exceeded sv_in
23

// preventDefault always works
$("mootoolsbutton").addEvent('click', function(event) {
 alert(typeof(event.preventDefault));
});

// preventDefault missing in IE
<button
  id="htmlbutton"
  onclick="alert(typeof(event.preventDefault));">
  button</button>

jQuery

e = $.event.fix(e);

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
3

e.preventDefault();

regular keyboard keye.returnValue = false;return false;

keyboard shortcutCtrl+F

try {
    e.keyCode = 0;
}catch (e) {}

document.attachEvent("onkeydown", function () {
    var e = window.event;

    //Ctrl+F or F3
    if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) {
        //Prevent for Ctrl+...
        try {
            e.keyCode = 0;
        }catch (e) {}

        //prevent default (could also use e.returnValue = false;)
        return false;
    }
});

4

if (e.preventDefault) {
    e.preventDefault();
} else {
    e.returnValue = false;
}

Error: User Rate Limit Exceeded
1

preventDefaultError: User Rate Limit Exceeded

undefined') {
    Event.prototype.preventDefault = function (e, callback) {
        this.returnValue = false;
    };
}

Error: User Rate Limit Exceedede.preventDefaultError: User Rate Limit Exceeded

6

Every event added with addEvent gets the mootools method automatically, without the need to manually instance it.

new Event(event).preventDefault();
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded sv_in

Похожие вопросы