Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从asp.net中的dropdownlist获取所选值_Jquery_Asp.net_Drop Down Menu - Fatal编程技术网

Jquery 从asp.net中的dropdownlist获取所选值

Jquery 从asp.net中的dropdownlist获取所选值,jquery,asp.net,drop-down-menu,Jquery,Asp.net,Drop Down Menu,我一直试图从dropdownlist中获取所选项目的值,但它似乎不起作用。我看过其他的话题,我知道这个问题已经被问过好几次了,但我需要帮助。我尝试了以下代码: $('ddlWorkHourFact option:selected').val() 但它返回“未定义”,我不知道为什么 这是我的下拉列表: <asp:DropDownList ID="ddlWorkHourFact" runat="server"> <asp:

我一直试图从dropdownlist中获取所选项目的值,但它似乎不起作用。我看过其他的话题,我知道这个问题已经被问过好几次了,但我需要帮助。我尝试了以下代码:

$('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>

7.
8.
9
试试
$('ddlWorkHourFact:selected').val()


您似乎缺少散列“#”符号…

首先,请确保ID ddlWorkHourFact存在于HTML代码中。ASP.NET通常创建如下内容:ctl1\u ddlWorkHourFact。你可以用

ClientIDMode="Static"
为了避免这个问题。后来

$('#ddlWorkHourFact').val()
应该足够了。

试试类似的方法

$('#ddlWorkHourFact').options[$('#ddlWorkHourFact').selectedIndex].val();
试试这个:

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

您需要了解,如果将控件放入内容等中,ASP.NET将在客户端生成不同的ID。之所以这样做是因为客户端中的ID应该是唯一的。如果你使用的是ASP.NET4.0,你可以按照Remy告诉你的去做

如果您不使用ASP.NET4.0,则不能这样做,但可以在jquery中进行“变通”

function GetClientID(id, context) {
var el = $("#" + id, context);
if (el.length < 1)
el = $("[id$=_" + id + "]", context);
return el;
}
这只是一个示例,您可以改进代码

编辑:

如果您在控件的同一页中执行此操作,也可以使用类似的内容

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

好的,我找到了问题所在。我试图在页面加载时提醒它。页面启动时脚本正在运行。但是我把警报放在一个函数中,并以onclick的形式给出它,那么问题现在就结束了。感谢您的帮助

您错过了工作时间开始前的#。可能是这样。另外,在客户端的浏览器中检查ASP.NET生成的ID。如果它仍然返回UnfinedEYEP,请检查我在下面提到的ID。ASP.NET生成自己的id。我也尝试过,id是“ContentPlaceholder 1_ddlWorkHourFact”。它返回未定义的still。您是否使用id前面的#进行了尝试?如果没有我在下面写的:选择?没有一个答案是正确的。它仍然返回“undefined”好吧,我知道问题出在哪里了。我正试图在页面加载时提醒它。页面启动时脚本正在运行。但是我把警报放在一个函数中,并以onclick的形式给出它,那么问题现在就结束了。谢谢你的帮助。我想在发出警报之前,下拉列表不会加载。这就是我遇到问题的原因。这是您上周所做评论的副本。不幸的是,在许多情况下,您无法将ClientMode设置为静态。我发现许多用于ASP.Net的第三方工具不喜欢这种方法。
$('#<%= ddlWorkHourFact.ClientID %> option:selected').val();