2011-12-27 73 views
3

我一直在試圖讓從下拉列表中所選項目的價值,但現在看來似乎是行不通的。我已經看過的其它主題,我知道這questino已經被問了幾次,但我需要help.I用下面的代碼部分:從下拉列表獲取選定值在asp.net

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

你缺少ddlWorkHourFact前的#。可能是那個。另外,請檢查客戶端瀏覽器中ASP.NET生成的ID。 –

+0

NOP它仍然返回undefined – Ktt

+0

是的,檢查正如我下面提到的ID。 ASP.NET生成它自己的ID。 – Remy

回答

5

嘗試$('#ddlWorkHourFact :selected').val()

好像你缺少哈希「#」符號...

+0

答案都沒有更正。它仍然返回「未定義」 – Ktt

13

首先,確保該ID ddlWorkHourFact存在於HTML代碼。 ASP.NET通常會創建如下所示的內容:ctl1_ddlWorkHourFact。您可以使用

ClientIDMode="Static" 

以避免該問題。之後

$('#ddlWorkHourFact').val() 

應該足夠了。

+0

不幸的是,有很多情況下,您不能將ClientIDMode設置爲靜態。我發現許多ASP.Net的第三方工具不喜歡這種方法。 –

1

嘗試像

$('#ddlWorkHourFact').options[$('#ddlWorkHourFact').selectedIndex].val(); 
+0

好吧我想到了這個問題。我試圖在頁面加載時提醒它。腳本在頁面啓動時運行。但是我把這個警報放在一個函數中,並把它作爲一個onclick,然後問題就結束了。 感謝您的幫助 – Ktt

+0

我猜下拉沒有得到加載之前警報。這就是爲什麼我解決了這個問題。 – Ktt

+0

這真的很好,你發現這個問題。 –

1

試試這個:

var _ddl = $("[id$='_ddlWorkHourFact']").attr("id"); 
    _option = "#" + _ddl + " option:selected"; 
    _value= $(_option).val(); 
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(); 
+0

+1最佳答案。 – paqogomez

0

好吧我想出了問題。我試圖在頁面加載時提醒它。腳本在頁面啓動時運行。但是我把這個警報放在一個函數中,並把它作爲一個onclick,然後問題就結束了。感謝您的幫助

+0

這是您上週所做評論的重複內容。 –

相關問題