Я использовал onchange, но код запускается onblur плюс код не работает в IE - PullRequest
3 голосов
/ 23 декабря 2011

Проблемы:

  1. В Chrome и Firefox код работает, но событие вызывается onblur, и оно мне нужно при наборе [решено с помощью onkeyup вместо onchange]
  2. Это не работает в IE вообще! [решено с помощью объекта Option, см. Обновление ..]

HTML:

<input type="text" onchange="getLocations(this)" />
<select size="6" multiple="multiple" id="locationOpt"></select>

JavaScript:

function getLocations(element) {
    var locations = Array("red","green","blue");
    var location_matched = [];

    for ( i in locations ){
            if(locations[i].search(element.value) > -1){
                    location_matched.push(locations[i]);    
            }
    }

    var html = "";
    for( i in location_matched){
            html += "<option value =\"" + i + "\">" + location_matched[i] + "</option>"; 
    }
    document.getElementById("locationOpt").innerHTML = html;
}

обновление

это окончательный рабочий код:
HTML:

<input type="text" onkeyup="getLocations(this)" />
<select size="6" multiple="multiple" id="locationOpt"></select>

JavaScript:

function getLocations(element) {
    var locations = Array("red","green","blue");
    var location_matched = [];

    for ( i in locations ){
            if(locations[i].search(element.value) > -1){
                    location_matched.push(locations[i]);    
            }
    }

var optionList = document.getElementById("locationOpt");

    //to remove all options
while (optionList.options.length) {
            optionList.remove (0);
    }

for( i in location_matched){
    // Option (text, value)
            var locationOption = new Option (location_matched[i], i);
            optionList.options.add (locationOption);
}
}

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Используйте onpropertychange для IE (это также сработает при вырезании / вставке).
Более того: вместо манипулирования внутренним HTML вы должны использовать new Option() для создания и вставки параметров.

1 голос
/ 23 декабря 2011

Чтобы обнаружить изменения при вводе пользователем, вам нужно использовать событие onkeypress. На аналогичный вопрос здесь уже был дан ответ: Определение "значения" поля ввода текста после события нажатия клавиши в текстовом поле?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...