12

我使用以下代码使用 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>
4

5 回答 5

18

idASP.Net 控件的属性是在服务器端生成的,因此在您生成的 HTML 中,id实际上类似于_$ctrl0239023930. 你需要使用的是ClientID这样的:

pStartMonth = $('#<%= cboMonth1.ClientID %>').val();
于 2013-10-08T09:09:25.607 回答
2

你的陈述似乎完全没问题。您可能缺少以下一项或多项。

  • 包含 jQuery 库
  • 将代码放入 docuemt.ready
  • 确保您

编辑基于更新的 OP,因为您有 asp.net 下拉列表,所以下拉列表的 id 将在生成的 html 中更改,因此您需要使用 ClientID。您还可以将ClientIDMode设置static为生成与服务器控件中相同的 id。

$(document).ready(function(){
   pStartMonth = $('#<%= cboMonth1.ClientID %>').val();
   alert(pStartMonth );
});

客户端ID模式

ASP.NET 为如何生成 ClientID 属性值提供了多种算法。您可以通过设置其 ClientIDMode 属性来选择用于控件的算法。这些算法由下表MSDN中列出的 ClientIDMode 枚举值标识。

您可以通过设置ClientIDMode = "static"id在 javascript中使用服务器端

HTML

<asp:DropDownList ID="cboMonth1" runat="server" ClientIDMode="static" AutoPostBack="true" onclick="javascript:shouldsubmit=false;" ValidationGroup="vTimeSlot">

Javascript

pStartMonth = $('#cboMonth1').val();
于 2013-10-08T09:09:01.897 回答
2

如果 javascript 函数在 .js 文件中,则使用:

    $('select[id$="cboMonth1"]').val();

如果它在 .aspx 文件中,则使用:

    $('#<%= cboMonth1.ClientID %>').val();
于 2013-10-08T09:19:24.747 回答
1

尝试这个

$("#cboMonth1 option:selected").val();
于 2013-10-08T09:06:32.917 回答
0

如果您的脚本位于未解析为 ASP.Net 的文件中(例如包含的 JS 文件),您可以像这样引用该元素...

pStartMonth = $('[id$=cboMonth1]').val();

这将找到一个 ID 以结尾 cboMonth1的元素,您将找到它。

于 2013-10-08T09:13:40.893 回答