jQuery 1.4.0, живая функция, событие изменения IE7,8

0

Я использую jQuery 1.4.0.

Я пытаюсь связать событие изменения с моими входами, используя живую функцию, но не работает на IE7 и 8 (на IE9,10, Firefox это работает).

$("input:text").live("change", function(e) {
    alert("works!");
});

С уважением.

  • 2
    Взгляните на это: stackoverflow.com/questions/4476634/live-event-not-works-in-ie7 - я полагаю, что вы вынуждены использовать 1.4 по какой-то причине, но если нет, то я действительно рекомендую использовать более свежая версия и этот ответ stackoverflow.com/a/9903328/2287470
  • 0
    Обратите внимание: в старом (6,7,8) IE change событие события только тогда, когда элемент теряет фокус пользователя. Но есть propertychange событие, но это не рекомендуется , так как IE9.
Показать ещё 6 комментариев
Теги:

1 ответ

1

Вам просто нужно обновить фильтр фокуса для события изменения, чтобы он соответствовал тому, что было обновлено в 1.4.1, который исправил проблему. Вы можете включить это в любом месте своего кода, если это произойдет до того, как пользователь изменит ввод и после включения ядра jquery.

function testChange(e) {
    var elem = e.target,
        data, val;

    if (!formElems.test(elem.nodeName) || elem.readOnly) {
        return;
    }

    data = jQuery.data(elem, "_change_data");
    val = getVal(elem);

    if (val === data) {
        return;
    }

    // the current data will be also retrieved by beforeactivate
    if (e.type !== "focusout" || elem.type !== "radio") {
        jQuery.data(elem, "_change_data", val);
    }

    if (data != null || val) {
        e.type = "change";
        return jQuery.event.trigger(e, arguments[1], elem);
    }
}

jQuery.event.special.change.filters.focusout = testChange;

Commit: https://github.com/jquery/jquery/commit/435772e29b4ac4ccfdefbc4045d43f714e153381

  • 0
    Это не работает, потому что функция testChange требует переменную formElems и функцию getVal. Конечно, я могу скопировать это из библиотеки jQuery, но так ли это лучше?
  • 0
    Нет, нет лучшего способа, который бы не предусматривал обновление jquery.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню