2011-12-27 4 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 в браузере клиента. –

+0

nop it по-прежнему возвращает undefined – Ktt

+0

Да, проверьте идентификатор, как я упомянул ниже. ASP.NET генерирует собственные идентификаторы. – Remy

ответ

5

попробовать $('#ddlWorkHourFact :selected').val()

кажется, что вам не хватает символ хэш «#» ...

+0

ни один из ответов не исправился. он по-прежнему возвращает «undefined» – Ktt

13

Во-первых, убедитесь, что ID ddlWorkHourFact существует в HTML коде , ASP.NET часто создает что-то вроде этого: ctl1_ddlWorkHourFact. Вы можете использовать

ClientIDMode="Static" 

, чтобы избежать этой проблемы. Впоследствии должно быть достаточно

$('#ddlWorkHourFact').val() 

должно быть достаточно.

+0

К сожалению, есть много случаев, когда вы не можете установить ClientIDMode в Static. Я нашел много сторонних инструментов для 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

КТТ,

Вы должны понимать, что ASP.NET будет генерировать другой идентификатор в стороне клиента, если вы установка контроля внутри содержимого и т. д. Это делается потому, что идентификатор на стороне клиента должен быть уникальным. Если вы используете ASP.NET 4.0, вы можете сделать то, что сказал вам Реми.

Если вы не используете 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»), чтобы получить идентификатор.

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

Это только пример, вы можете улучшить код.

Edit:

Вы также можете использовать что-то вроде этого, если вы делаете это в той же странице управления.

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

+1 лучший ответ. – paqogomez

0

В порядке я решил проблему. Я пытался предупредить его, когда страница загружается. скрипт запускался при запуске страницы. но я поставил предупреждение в функцию и передал его как onclick, тогда проблема окончена. Спасибо за помощь

+0

Это дубликат комментария, сделанного на прошлой неделе. –

Смежные вопросы