Обработчики кликов jQuery не всегда работают в IE 7/8, используя v1.5 - PullRequest
0 голосов
/ 14 февраля 2011

Я определил некоторые обработчики событий щелчка следующим образом:

$(document).ready(function () {
  /*
  * Since the "Start Upload" button is available, we don't need to worry about starting the 
  * upload when the user clicks "Update". But we need to make sure to display an error message
  * if there are files in the uploader that have not been uploaded yet.
  */
  $('#myAccount p.buttons input[alt="Update"]').click(function (event) {

    // check if there are files in the uploader
    if (uploader.files.length > 0) {

        // if there are files that have not been uploaded yet, we need to show an error message
        if (uploader.total.uploaded != uploader.files.length) {

            // if the error message hasn't been created yet, create it
            // else, it'll already be visible so we don't need to do anything
            if ($('#upload_error').length == 0) {
                $('<p id="upload_error">Error!</p>').insertAfter('#myAccount p.buttons input[alt="Cancel"]');
            }
            event.preventDefault(); // stop the click event
        }
    }
    // continue click event as normal
  });
});

... и ...

// if the cancel button is clicked, then remove the files from the uploader
$('#myAccount p.buttons input[alt="Cancel"]').click(function (event) {
    uploader.splice(0, uploader.files.length);
    // continue click event as normal
});

Оба прекрасно работают в Firefox, но в IE8 и IE7 (режим совместимости) они работают не всегда.

Чтобы быть более конкретным, этот материал для "загрузки" связан с загрузчиком файлов Plupload . По сути, у меня есть этот загрузчик в форме. Форма отправляется нормально, и вышеописанные обработчики кликов работают нормально, если я вообще не касаюсь загрузчика.

Однако в следующем случае описанные выше обработчики кликов не работают: я ставлю файлы в очередь и позволяю загрузчику делать свое дело, поэтому все файлы были загружены; теперь я нажимаю кнопку отправить в форме, и ничего не происходит, но я ожидаю, что форма будет отправлена. Каждый раз, когда я взаимодействую с загрузчиком, обработчики событий click не работают.

Я надеюсь, что мои комментарии прояснят мои намерения. Есть идеи, почему это не работает в IE 7/8? Что я делаю неправильно? event.preventDefault() обрабатывается по-другому в IE?

Спасибо.

Ответы [ 2 ]

1 голос
/ 14 февраля 2011

Попробуйте это:

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

Проверка на предотвращение дефолта перед его использованием.

Как говорится, с jQuery вам нужно только return false; и он обрабатывает вседля тебя

0 голосов
/ 16 февраля 2011

Я только что перешел на Flash во время выполнения. Кажется, сейчас все в порядке.

...