ошибка события изменения jQuery 1.4 в IE

У меня есть этот простой выбор:


и на нем существует:

$('#items_per_page').change(function(){  
    var controller_action = this.name.replace(/_/g, '/');  
    location.href = config.base_url + '/' + controller_action + '/'+this.value;  
});

Это раньше работало в jQuery 1.3, но в 1,4 запущено событие изменения, как только я нажимаю на избранное поле. Есть ли какое-либо решение помимо возвращения к 1,3?


Это действительно, кажется, ошибка, и о ней сообщили jQuery:

http://dev.jquery.com/ticket/5869

Был примененный патч и будет частью jQuery 1.4.1.

http://github.com/jquery/jquery/commit/435772e29b4ac4ccfdefbc4045d43f714e153381

7
задан Nick Craver 19 July 2010 в 18:05
поделиться

5 ответов

Вот исправить эту ошибку: http://github.com/mcurry/jquery/commit/a293f5938eb9efd41158b948f487672d48f487672d43b7c820

Надеюсь, он будет в 1.4.1

3
ответ дан 7 December 2019 в 18:43
поделиться

из http://jquery14.com/day-01/jquery-14

Изменить и Отправить События Нормализовано (смена документации, Отправить документацию)

Изменить и представить события работы надежно через браузеры для обоих нормальные и живые события. Мы отменяем нормальные изменения и отправки событий в Internet Explorer и заменить их с событиями, которые работают идентично Другие браузеры.

Хорошо, это похоже на ошибку, либо в IE или jQuery.

Что вызывает эту проблему, является выбранным = «выбранным» атрибутом на параметрах, вызывает событие изменений, прежде чем происходит какое-либо событие мыши. Я предполагаю, что это странность / ошибка с IE, как кажется, что он не устанавливает выбранный элемент до тех пор, пока он не виден, что вызывает изменение даже для огня при первоначальном раскрывающемся списке. Я говорю, что это ошибка в IE, потому что если я позвоню Window.event.cancelBubble, обработчик событий вообще не огонь.

Это действительно странно.

Обходной путь состоит в том, чтобы удалить выбранный атрибут.

3
ответ дан 7 December 2019 в 18:43
поделиться

Я не уверен, что он должен работать таким образом, но вы обращаетесь к this.value и . Имейте в одном обратном вызове. Я бы предположил, что это относится к Event.CurrentTarget , что в этом случае является элементом выбора.

В этом случае it.value будет неопределен, но вы можете попробовать использовать $ (это) .val (); вместо.

Вы пытались утешить переменные?

0
ответ дан 7 December 2019 в 18:43
поделиться

Вы можете использовать размытие () событие jQuery. Возможно, что-то вроде этого:

var defaultValue = 10;

$('#items_per_page').blur(function(){  
    if ($("#items_per_page").val() == defaultValue)
        return; //The value wasn't changed, so return.
    var controller_action = this.name.replace(/_/g, '/');  
    location.href = config.base_url + '/' + controller_action + '/'+this.value;  
});
-4
ответ дан 7 December 2019 в 18:43
поделиться

Я все еще получаю подобную проблему даже с 1.4.1.

Используя пример ниже:

  1. Выберите значение из списка выбора - появляется предупреждение (правильно).
  2. Нажмите кнопку «Изменить ссылку» - «Выбрать список» сбрасывается до 0 (правильно).
  3. Нажмите список выбора - появляется предупреждение. (Неправильно)

Уведомление на третьем шаге не отображается в 1.3.2.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>

    <script type="text/javascript">

    $(document).ready(function(){
        $('#dropDownList1').bind('change',function(){ alert("changed"); });

        $('#btnChange').click(function(){
            $('#dropDownList1')[0].selectedIndex = 0;
        });
    });


    </script>
</head>
<body>
        <select id="dropDownList1">
            <option value="0">0</option>
            <option value="1">1</option>
            <option value="2">2</option>
        </select>

        <a href="#" id="btnChange">Change</a>
</body>
</html>
0
ответ дан 7 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

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