Как получить выбранное значение из ComboBox ajax.net через JavaScript

Мне нужно получить выбранное значение из комбинированного списка ajax.net через javascript, чтобы я мог выполнить некоторую проверку на стороне клиента.

Какой лучший способ сделать это? Спасибо,


Я был в состоянии получить значение с этим:

var combo = $get('ddlComarcas');
var comboHidden = $get('ddlComarcas_HiddenField');
var o4 = combo.getElementsByTagName('li')[comboHidden.value].childNodes[0];

alert('"' + o4.data + '"');

Но мне все еще нужно обрезать значение из o4.data. Кто-нибудь может указать, как сделать это Visual Studio 2008 JQuery?

3 ответа

Вы можете использовать jQuery или просто использовать DOM:

JQuery:

var selection = $('#selectID').val();

DOM:

var selection = document.getElementById("selectID").value;

asp.net -> серверная часть

JavaScript -> на стороне клиента

Я думаю, что ответом является значение не существует на стороне клиента, поэтому он не может быть восстановлен. Существуют более простые способы получить индекс tho (при условии, что инициализация завершена).

selected index:         $find("<%=cboName.ClientID%>").get_hiddenFieldControl().value;
selected index (again): $find("<%=cboName.ClientID%>").get_selectedIndex();
selected text:          $find("<%=cboName.ClientID%>").get_textBoxControl().value;

Насколько я могу судить, проверка комбинированного списка на клиенте требует некоторой веры в индекс или текст или какой-то обходной путь на стороне сервера.

Чтобы обеспечить прямой ответ на строку темы, мог бы быть создан массив javascript на стороне сервера с каждым значением комбинированного списка, а затем ссылка на сторону клиента по выбранному индексу...

отделенный код:

 // write combobox values to asp:literal
 foreach (ListItem i in cboName.Items)
         litCboValues.Text += "\"" + i.Value.Replace("\"", "\\\"") + "\", ";
 litCboValues.Text = litCboValues.Text.TrimEnd(new char[] {',', ' '});

ASPX:

<script>
// array of values
 var cboValues = [ <asp:Literal id="litCboValues" runat="server" /> ];

// add an alert to the combobox to test
function pageLoad()
{
  $find("<%=cboName.ClientID%>").get_textBoxControl().onblur = function () { 
    alert( cboValues[$find("<%=cboName.ClientID%>").get_selectedIndex()] );
  };
}
</script>


<asp:ComboBox id="cboName" runat="server" ...

Это работает (сегодня) в IE и Chrome - почти единственное, что подходит для отладчика f12 (- вы можете просматривать просматриваемые объекты

После // я делаю это на кнопке, но вы можете сделать это на комбо-событии
 function addFollowed() {
      var combo = $get('<%= FollowListBox.ClientID %>'); 
      var toFollow = combo.control._textBoxControl.value;
Другие вопросы по тегам