从asp.net中的下拉列表中获取所选值

Ktt*_*Ktt 3 asp.net jquery drop-down-menu

我一直试图从下拉列表中获取所选项目值,但似乎它无法正常工作.我已经查看了其他主题,我知道这个questino已被多次询问但我需要帮助.我使用了以下代码部分:

$('ddlWorkHourFact option:selected').val()
Run Code Online (Sandbox Code Playgroud)

但它让我"未定义",我不知道为什么.这是我的下拉列表

<asp:DropDownList ID="ddlWorkHourFact"  runat="server">
                            <asp:ListItem Value="7" Text="7">7</asp:ListItem>
                            <asp:ListItem Value="8" Selected="True" Text="8">8</asp:ListItem>
                            <asp:ListItem Value="9" Text="9">9</asp:ListItem>
                        </asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

Rem*_*emy 13

首先,确保HTML代码中存在ID ddlWorkHourFact.ASP.NET经常创建这样的东西:ctl1_ddlWorkHourFact.您可以使用

ClientIDMode="Static"
Run Code Online (Sandbox Code Playgroud)

避免这个问题.然后

$('#ddlWorkHourFact').val()
Run Code Online (Sandbox Code Playgroud)

应该够了.


Bru*_*sta 6

KTT,

您需要了解,如果您将控件放在内容等中,ASP.NET将在客户端生成不同的ID.这样做是因为客户端的ID应该是唯一的.如果您使用的是ASP.NET 4.0,则可以执行Remy告诉您的操作.

如果您不使用ASP.NET 4.0,则不能这样做,但您可以在jquery中执行"解决方法".

function GetClientID(id, context) {
var el = $("#" + id, context);
if (el.length < 1)
el = $("[id$=_" + id + "]", context);
return el;
}
Run Code Online (Sandbox Code Playgroud)

有关此代码的更多信息,请访问此处.

然后,您只需要执行以下操作:GetClientID("txtboxId").attr("id")以获取ID.

$("#" + GetClientID("ddlWorkHourFact").attr("id") + " option:selected").val();
Run Code Online (Sandbox Code Playgroud)

这只是一个例子,你可以改进代码.

编辑:

如果你在同一个控制页面中这样做,你也可以使用这样的东西.

$('#<%= ddlWorkHourFact.ClientID %> option:selected').val();
Run Code Online (Sandbox Code Playgroud)


NiK*_*NiK 5

尝试 $('#ddlWorkHourFact :selected').val()

好像你错过了哈希"#"符号......