好的我有一个问题,可能很简单。但我似乎无法理解发生了什么。我有3个安全问题下拉菜单。我在ASPX页面上有javascript,当您选择问题时,它会删除问题/重新填充它们(因此您无法在其他2个框中重新选择问题)。当用户使用已选择的问题编辑其个人资料时,这非常有效。但是,当用户首先选择所有三个框都在selectedIndex 0上列出“请选择一个问题”的问题时,onChange不会触发。该功能甚至不会去。我认为这与选择的0指数的变化有很大关系。我调试了这个东西,它甚至没有进入函数。我甚至设置了onchange动作来闪烁警报。当我尝试从选定的0指数进行交换时,似乎出现了问题。任何想法?
答案 0 :(得分:0)
也许我从你所描述的内容中遗漏了一些内容..只有当selectedIndex 更改时才会触发onChanged事件。因此,如果您在selectedIndex(0)处下拉下拉列表并重新选择第一项onChange将不会触发。
答案 1 :(得分:0)
选择标记的第一个选项(索引0)默认情况下已选择 。这就是为什么如果再次选择你的onChange事件将不会激活。
this popular question的答案可能有所帮助。要在选择任何选项时触发事件,您可以将默认值更改为“无选项选择”,如下所示:
document.getElementById("mySelectTagId").selectedIndex = -1;
答案 2 :(得分:-1)
当您重新填充列表时,如果您将索引0处的项目(“请选择一个问题”)替换为另一个代表问题的项目,那么您的活动将不会触发。
要么
1。您将第一项保留为非选定索引(因此您的下拉菜单将始终显示“请选择一个问题”,用户需要更改它)。或
2。您在重新填充下拉列表后手动触发事件:
<html>
<head>
<script type="text/javascript">
function sOnChange(){
alert('Changed');
}
function replaceItems(){
var dropDown = document.getElementById('s');
dropDown.innerHTML = "";
for(var x=0;x<5;x++){
var opt = document.createElement("option");
opt.value = x;
opt.appendChild(document.createTextNode("New options" + (x+1)));
dropDown.appendChild(opt);
}
dropDown.onchange();
}
</script>
</head>
<body>
<input type="button" onclick="replaceItems();" value="Replace Items"/>
<select id="s" onchange="sOnChange()">
<option>Press the button Please</option>
</select>
</body>
</html>