【发布时间】:2011-12-23 12:35:43
【问题描述】:
问题:
- 在 Chrome 和 Firefox 中,代码有效,但事件被触发
onblur,我在键入 时需要它[通过使用 onkeyup 而不是 onchange 解决] - 这在 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);
}
}
【问题讨论】:
-
对于文本
input元素,change事件仅在框失去焦点并且值更改时触发。如果你想在用户输入时实时更新,你必须监听一个或多个关键事件。 -
onkeyup 在我看来更好
-
谢谢 Lucky,它可以在除 IE 之外的所有浏览器中使用?!
标签: javascript html javascript-events