Событие Jquery Listbox Change не стреляет в прокрутку Клавиатуры

Быстрый и легкий:

function preload(arrayOfImages) {
    $(arrayOfImages).each(function(){
        $('<img/>')[0].src = this;
        // Alternatively you could use:
        // (new Image()).src = this;
    });
}

// Usage:

preload([
    'img/imageName.jpg',
    'img/anotherOne.jpg',
    'img/blahblahblah.jpg'
]);

Или, если Вы хотите плагин jQuery:

$.fn.preload = function() {
    this.each(function(){
        $('<img/>')[0].src = this;
    });
}

// Usage:

$(['img1.jpg','img2.jpg','img3.jpg']).preload();
16
задан Cyril Gupta 6 August 2009 в 05:50
поделиться

4 ответа

Событие onchange обычно не запускается, пока элемент не потеряет фокус. Вы также захотите использовать onkeypress . Может быть, что-то вроде:

var changeHandler = function() {
    $(".prashQs").addClass("hide");
    var cat = $("#selCategory :selected").attr("id");
    cat = cat.substr(1);
    $("#d" + cat).removeClass("hide");
}

$("#selCategory").change(changeHandler).keypress(changeHandler);

Вам нужно, чтобы оба onchange и onkeypress учитывали взаимодействие с мышью и клавиатурой соответственно.

21
ответ дан 30 November 2019 в 21:29
поделиться

Иногда поведение изменения может отличаться в зависимости от браузера, в качестве обходного пути вы можете сделать что-то вроде этого:

 //Toggle visibility of selected item
    $("#selCategory").change(function() {
        $(".prashQs").addClass("hide");
        var cat = $("#selCategory :selected").attr("id");
        cat = cat.substr(1);
        $("#d" + cat).removeClass("hide");
    }).keypress(function() { $(this).change(); });

Вы можете связать любые события, которые хотите, и вручную запустить событие изменения.

IE:

var changeMethod = function() { $(this).change(); };
....keypress(changeMethod).click(changeMethod).xxx(changeMethod);
4
ответ дан 30 November 2019 в 21:29
поделиться

Описываемое вами поведение, запуск события изменения при прокрутке с клавиатуры в элементе выбора, на самом деле является ошибкой Internet Explorer. В спецификации DOM Level 2 Event событие change определяется следующим образом:

Событие изменения происходит, когда элемент управления теряет фокус ввода и его значение был изменен с момента получения фокуса. Это событие действительно для INPUT, SELECT, и ТЕКСТАРА. element.

Если вам действительно нужно такое поведение, я думаю, вам следует посмотреть на события клавиатуры.

$("#selCategory").keypress(function (e) { 
  var keyCode = e.keyCode || e.which; 
  if (keyCode == 38 || keyCode == 40) { // if up or down key is pressed
     $(this).change(); // trigger the change event
  } 
}); 

Посмотрите пример здесь ...

1
ответ дан 30 November 2019 в 21:29
поделиться

У меня была такая проблема в IE под JQuery 1.4.1 - события изменения в комбобоксах не срабатывали, если для изменения использовалась клавиатура.

Кажется, это было исправлено в JQuery 1.4.2.

0
ответ дан 30 November 2019 в 21:29
поделиться
Другие вопросы по тегам:

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