событие изменения таблицы не выполняется в IE - PullRequest
1 голос
/ 15 апреля 2009

Я использую jQuery для захвата события изменения в таблице. В таблице много строк, и в каждой строке есть несколько полей ввода и флажок. Для этого я использую делегирование событий. Я фиксирую любые изменения на уровне тела. Это код ниже

$j('#orderItems tbody').change(function(event){
     var target = $j(event.target);
            var nodeName = $j(target).attr('nodeName').toLowerCase();
            if(nodeName == 'input'){
                if($j(target).hasClass('partnum')){
                    var val = $j(target).attr('value');
                    dsOrder.getItem(target);
                    dsOrder.updateActiveIndex(target);
                }
                if($j(target).hasClass('qty')){
                    var val = $j(target).attr('value');
                    dsOrder.updateQty(target);
                    dsOrder.updateActiveIndex(target);
                }
                if($j(target).hasClass('unitprice')){
                    var val = $j(target).attr('value');
                    dsOrder.updatePrice(target);
                    dsOrder.updateActiveIndex(target);
                }
            }
        })

Этот код отлично работает в Firefox, но событие изменения не фиксируется в IE. Я хотел бы подойти к этому решению, используя делегирование событий, а не прикреплять каждое событие к каждому элементу ввода. Я также хотел бы избежать нацеливания на каждый элемент с использованием jQuery, поскольку строки таблицы строятся динамически, а события отмены / привязки кажутся немного грязными (только мое мнение)

Есть идеи, как заставить это работать?

1 Ответ

1 голос
/ 15 апреля 2009

Вы на самом деле используете всплывающее окно для получения события в элементе-предке, а не захвата (который IE не поддерживает и jQuery не использует). К сожалению, пока onchange пузыри в спецификации DOM это не в IE .

Я думаю, вам просто нужно нацелиться на входы. (К сожалению, функция «live» также не поддерживает onchange.)

...