使用javascript获取ASP dropdownlist选定值

使用javascript获取ASP dropdownlist选定值,javascript,c#,asp.net,Javascript,C#,Asp.net,我在asp中有一个下拉列表,如下所示: <asp:DropDownList ID="ddlActiveStatus" AutoPostBack="True" runat="server" onchange = "dconfirm()" OnSelectedIndexChanged = "ddlActiveStatus_SelectedIndexChanged"> <asp:ListItem></asp:ListItem> <asp:ListIte

我在asp中有一个下拉列表,如下所示:

<asp:DropDownList ID="ddlActiveStatus" AutoPostBack="True" runat="server" onchange = "dconfirm()" OnSelectedIndexChanged = "ddlActiveStatus_SelectedIndexChanged">
  <asp:ListItem></asp:ListItem>
  <asp:ListItem Value="Y">Y</asp:ListItem>
  <asp:ListItem Value="N">N</asp:ListItem>
</asp:DropDownList>
onchange = "dconfirm(this.value)"
当用户选择一组不同的值时,我想检索所选索引的值。我有这样一个代码:

function dconfirm(){
var e = document.getElementById("<%=ddlActiveStatus.ClientID%>");
var selVal = e.options[e.selectedIndex].value;
alert(selVal);}
预期结果是,当用户选择“Y”时,javascript将向“Y”发出警报。但是,程序不断抛出以下错误:

当前上下文中不存在名称“ddlActiveStatus”

我只想使用javascript完成它。我错过了什么?请告知


谢谢。

虽然从技术上讲,您所做的应该是可行的,但您可以通过直接在ddlActiveStatus控件上添加clientMode=Static来避免在JavaScript中引用ddlActiveStatus.ClientID

这样做可以让您完全控制为控件生成的ID,这样您就可以在JavaScript中简单地使用以下内容:


var e=document.getElementByIdddlActiveStatus ASP有时会更改ID。请向元素添加名称,如下所示:

<asp:DropDownList Name="DdlActiveStatus" ID="ddlActiveStatus" AutoPostBack="True" runat="server" onchange = "dconfirm()" OnSelectedIndexChanged ="ddlActiveStatus_SelectedIndexChanged">
然后使用:var x=document.getElementsByNameDdlActiveStatus

或者,您可以使用jquery: $'[name=DdlActiveStatus]'.doStuff

$('#ddlActiveStatusoption').val()


我已经想出了一个解决办法。希望它能帮助那些正在寻找答案的人

我将通过向dropdownlist属性添加以下代码来传递值,而不是在javascript中获取ddlActiveStatus的选定值,如下所示:

<asp:DropDownList ID="ddlActiveStatus" AutoPostBack="True" runat="server" onchange = "dconfirm()" OnSelectedIndexChanged = "ddlActiveStatus_SelectedIndexChanged">
  <asp:ListItem></asp:ListItem>
  <asp:ListItem Value="Y">Y</asp:ListItem>
  <asp:ListItem Value="N">N</asp:ListItem>
</asp:DropDownList>
onchange = "dconfirm(this.value)"
至于我的javascript函数,它将显示用户选择的值。代码如下:

function dconfirm(values)
{
    alert(values);

    if (values == 'Y')
    {
        //do something
    }
}
这是我的工作。希望能有帮助


谢谢你们的回复,干杯

对我来说最简单的方法是

var VarName = $('#<%=YouDropDownId.ClientId %>').val();
为了你的案子你忘了 试试这个,我希望它能起作用

var e = document.getElementById('#<%=ddlActiveStatus.ClientID %>');

祝你好运。

是的,它在aspx页面中。你能在代码隐藏中访问它吗?我已经复制粘贴了你的代码,它已经成功了。也许问题出在这些代码之外。ddlActiveStatus是在repeater中还是什么?如果是这样的话,你就不能像那样在普通javascript中访问它。在页面加载后检查ddlActiveStatus的正确id。如果它没有与唯一的代码连接,我们的代码会给我一些方向,但是我仍然有一些麻烦。当我尝试alertx时,它给了我“[object]”。然后,我使用var selVal=x.options[x.selectedIndex].value来检索它所选的值,但它没有给我任何信息。有什么想法吗?