195

Вопрос по preventdefault, mootools, internet-explorer, events, javascript – Функция event.preventDefault () не работает в 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).

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

  • Error: User Rate Limit ExceededstopError: User Rate Limit Exceeded

    от
  • event.preventDefault();Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit ExceededmustError: User Rate Limit Exceeded

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

    от
  • Error: User Rate Limit Exceeded

    от sv_in
  • Error: User Rate Limit Exceeded

    от
  • .stop()Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceededevent.originalEventError: User Rate Limit Exceededstackoverflow.com/a/16675056/22550

    от sv_in
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от sv_in
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • event.preventDefault ? event.preventDefault() : event.returnValue = false;

    от
  • Error: User Rate Limit ExceededThis fiddleError: User Rate Limit Exceededjsfiddle.net

    от eerne
  • Error: User Rate Limit Exceeded

    от Alsciende
  • Error: User Rate Limit Exceededmootools.net/docs/core/Native/Event#Event:preventDefaultError: User Rate Limit Exceeded

    от Paolo Bergantino
11 ответов
  • 4

    Error: User Rate Limit Exceeded

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

  • 0

    Error: User Rate Limit Exceeded

  • 0

    addEvent('submit', function () { // your code return false; }

    return falseError: User Rate Limit Exceeded

    $('orderNowForm').

  • 6

    Error: User Rate Limit Exceeded

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

    new Event(event).preventDefault();
    

  • 1

    if (typeof Event.prototype.preventDefault === 'undefined') {

    preventDefaultError: User Rate Limit Exceeded

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

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

  • 2

    Error: User Rate Limit Exceeded

    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;
    })
    

  • 3

    Error: User Rate Limit Exceeded

    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;
        }
    });
    

  • 23

    Error: User Rate Limit Exceeded

    // 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);
    

  • 11

    Error: User Rate Limit Exceeded

    $('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

  • 457

    Error: User Rate Limit Exceeded event.returnValue = false;

    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);
    

  • 0

    Error: User Rate Limit Exceeded

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