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

时间:2011-12-27 10:27:36

标签: jquery asp.net drop-down-menu

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

$('ddlWorkHourFact option:selected').val()

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

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

6 个答案:

答案 0 :(得分:13)

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

ClientIDMode="Static"

避免这个问题。之后

$('#ddlWorkHourFact').val()

应该足够了。

答案 1 :(得分: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;
}

有关此代码的详细信息,请访问here

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

$("#" + GetClientID("ddlWorkHourFact").attr("id") + " option:selected").val();

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

编辑:

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

$('#<%= ddlWorkHourFact.ClientID %> option:selected').val();

答案 2 :(得分:5)

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

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

答案 3 :(得分:1)

尝试类似

的内容
$('#ddlWorkHourFact').options[$('#ddlWorkHourFact').selectedIndex].val();

答案 4 :(得分:1)

试试这个:

   var _ddl = $("[id$='_ddlWorkHourFact']").attr("id");
    _option = "#" + _ddl + " option:selected";
    _value= $(_option).val();

答案 5 :(得分:0)

好吧我想出了问题。当页面加载时我试图提醒它。页面启动时脚本正在运行。但我把警报放在一个函数中并将其作为一个onclick,然后问题就结束了。谢谢你的帮助