Javascript 我使用了onchange,但是代码是在blur上启动的,而且代码在IE中不起作用
问题:Javascript 我使用了onchange,但是代码是在blur上启动的,而且代码在IE中不起作用,javascript,html,javascript-events,Javascript,Html,Javascript Events,问题: 在Chrome和Firefox中,代码可以正常工作,但会触发事件onblur,我在键入时需要它[使用onkeyup而不是onchange解决] 这在IE中根本不起作用[通过使用选项对象解决,请参阅更新..] HTML: 要检测用户类型的变化,必须使用onkeypress事件。这里已经回答了一个类似的问题:将onpropertychange用于IE(这也将在剪切/粘贴时触发)。 此外:不应使用innerHTML来创建和插入选项。对于文本输入元素,更改事件仅在框失去焦点且值更改时触发。如果你
onblur
,我在键入时需要它[使用onkeyup而不是onchange解决]要检测用户类型的变化,必须使用
onkeypress
事件。这里已经回答了一个类似的问题:将onpropertychange用于IE(这也将在剪切/粘贴时触发)。此外:不应使用innerHTML来创建和插入选项。对于文本
输入
元素,更改
事件仅在框失去焦点且值更改时触发。如果你想在用户键入时进行实时更新,你必须多听一个或多个关键事件。我认为onkeyup更好。如果你幸运的话,它可以在除IE之外的所有浏览器中工作onkeyup
是解决方案。谢谢你的链接,但是为什么这在IE中不起作用?你使用的是哪个版本的IE?您是否收到任何JavaScript错误消息?
<input type="text" onchange="getLocations(this)" />
<select size="6" multiple="multiple" id="locationOpt"></select>
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;
}
<input type="text" onkeyup="getLocations(this)" />
<select size="6" multiple="multiple" id="locationOpt"></select>
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);
}
}