DropDownList onChange不在selectedIndex 0下工作

时间:2010-07-02 15:07:59

标签: c# asp.net javascript drop-down-menu

好的我有一个问题,可能很简单。但我似乎无法理解发生了什么。我有3个安全问题下拉菜单。我在ASPX页面上有javascript,当您选择问题时,它会删除问题/重新填充它们(因此您无法在其他2个框中重新选择问题)。当用户使用已选择的问题编辑其个人资料时,这非常有效。但是,当用户首先选择所有三个框都在selectedIndex 0上列出“请选择一个问题”的问题时,onChange不会触发。该功能甚至不会去。我认为这与选择的0指数的变化有很大关系。我调试了这个东西,它甚至没有进入函数。我甚至设置了onchange动作来闪烁警报。当我尝试从选定的0指数进行交换时,似乎出现了问题。任何想法?

3 个答案:

答案 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>