我使用以下代码使用JQuery获取我的下拉列表的选定值。
pStartMonth = $('#cboMonth1').val();
但我得到的结果为undefined
。我错过了什么?
我的下拉列表的HTML:
<asp:DropDownList ID="cboMonth1" runat="server" AutoPostBack="true" onclick="javascript:shouldsubmit=false;" ValidationGroup="vTimeSlot">
<asp:ListItem Value="0">-Select-</asp:ListItem>
<asp:ListItem Value="1">January</asp:ListItem>
<asp:ListItem Value="2">February</asp:ListItem>
<asp:ListItem Value="3">March</asp:ListItem>
<asp:ListItem Value="4">April</asp:ListItem>
<asp:ListItem Value="5">May</asp:ListItem>
<asp:ListItem Value="6">June</asp:ListItem>
<asp:ListItem Value="7">July</asp:ListItem>
<asp:ListItem Value="8">August</asp:ListItem>
<asp:ListItem Value="9">September</asp:ListItem>
<asp:ListItem Value="10">October</asp:ListItem>
<asp:ListItem Value="11">November</asp:ListItem>
<asp:ListItem Value="12">December</asp:ListItem>
</asp:DropDownList>
答案 0 :(得分:17)
id
属性是在服务器端生成的,因此在生成的HTML中,id
实际上就像_$ctrl0239023930
。您需要使用的是ClientID
,如下所示:
pStartMonth = $('#<%= cboMonth1.ClientID %>').val();
答案 1 :(得分:2)
你的陈述似乎完全没问题。您可能会遗漏以下一项或多项内容。
编辑根据更新后的OP,因为你有asp.net下拉列表,下拉列表的ID将在生成的html中更改,因此你需要使用ClientID。您还可以将ClientIDMode设置为static
,以生成与服务器控件中相同的ID。
$(document).ready(function(){
pStartMonth = $('#<%= cboMonth1.ClientID %>').val();
alert(pStartMonth );
});
ASP.NET为如何生成ClientID提供了多种算法 适当的价值。您可以选择要用于控件的算法 设置其ClientIDMode属性。算法由 以下列出的ClientIDMode枚举值 表,MSDN。
您可以在javascript中使用服务器端id
,方法是设置 ClientIDMode =“static”
HTML
<asp:DropDownList ID="cboMonth1" runat="server" ClientIDMode="static" AutoPostBack="true" onclick="javascript:shouldsubmit=false;" ValidationGroup="vTimeSlot">
的Javascript
pStartMonth = $('#cboMonth1').val();
答案 2 :(得分:2)
如果javascript函数在.js文件中,则使用:
$('select[id$="cboMonth1"]').val();
如果它在.aspx文件中而不是使用:
$('#<%= cboMonth1.ClientID %>').val();
答案 3 :(得分:1)
试试这个
$("#cboMonth1 option:selected").val();
答案 4 :(得分:0)
如果您的脚本位于未被解析为ASP.Net的文件中(例如包含的JS文件),您可以像这样引用元素......
pStartMonth = $('[id$=cboMonth1]').val();
这将找到一个ID为以 cboMonth1
结尾的ID元素。