2012-05-07 4 views
0

У меня есть поля, которые пользователь вводит, и я передам его в jQuery и перейду к веб-сервису.jQuery - получить выбранные опции коллекции listitem?

я могу получить значения Textboxes по:.

имени вара = $ («# MainContent_txtName») Вал()

Проблемы у меня есть несколько выбор, который состоит из элемента списка коллекция. Если бы я должен был сделать это на стороне сервера, я хотел бы сделать что-то вроде:

foreach (ListItem li in listTitles) 
{ 
    if (li.Selected) 
    { 
    selectedValue += li.Value + ","; 
    } 
} 

И это дало бы мне строку выбранных значений из списка выбора. У меня возникли проблемы с выходом из jQuery. Если я

var titles = $("#MainContent_selectListTitles").val() 

То есть, очевидно, неправильно, потому что это не вернет выбранные элементы списка. Я видел сообщение, в котором говорилось, что я мог бы получить его, если я скажу, что выбрана опция. Так что я попытался это:

var titles= $('#MainContent_selectListTitles option:selected'); 

Следующая вещь, которую я сделал поп-предупреждение, чтобы увидеть, что названия были. Он просто сказал [объект, объект].

Так что мои вопросы:

  1. Можно ли получить выбранные элементы из коллекции элементов списка каскадной в строку?

  2. Или лучше, что я получаю все значения формы от обратной передачи даже по моему коду, а затем вызываю функцию jquery? Если это вариант, я попытался сделать это, но проиграл. Это говорит мне, что он не может найти метод. Поэтому я определенно не вызываю функцию jquery правильно при возврате события кнопки.

ЧТЕНИЯ.

+0

Хорошо, поэтому я получил его сейчас. Простите меня, поскольку это мой первый раз, используя jQuery. Я использую это, чтобы получить каждый выбранный вариант: $ ("# MainContent_msClaimantType: проверено"). Каждая (функция() { оповещения ($ (это) .text()); Теперь это всплывает предупреждение для каждый выбранный вариант. Итак, теперь вопрос заключается в том, как объединить выбранные опции в переменную? спасибо. –

+0

Я бы пошел с опцией №1, и я сделал схожую с # 1 –

ответ

0

Во-первых, убедитесь, что ваш идентификатор элемента верен на стороне клиента, который является «MainContent_selectListTitles». Вы можете проверить его «Просмотр источника».

Если идентификатор верен, следуйте этому правилу.

$('#MainContent_selectListTitles').change(function() { 
     var str = ""; 
     $('#MainContent_selectListTitles option:selected').each(function() { 
       str += $(this).text() + " "; 
       //pass str value to your web service here. 
     }); 
    }).trigger('change'); 

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

+0

Спасибо Михаилу и Йонасу Я действительно работал но попробовал ваши методы, чтобы доказать, что ваша работа тоже. Моя действительно была очень похожа на то, что имел Джонас. Я был дураком. У меня была var str = "" внутри каждой функции. Не удивительно, почему ничего не было в нем, когда я пытался передать его через веб-службу. Спасибо за помощь! –

1

Я не удивлен, что у вас есть [объект, объект] в вашем предупреждении - это потому, что у вас есть и массив выбранных элементов (на самом деле, два элемента были выбраны), и предупреждение отображало ваш массив как [объект , объект], который является прекрасным.

Имея следующий HTML код:

<div> 
     <select multiple="multiple" id="mySelect"> 
      <option value="test1" selected="selected">Test 1</option> 
      <option value="test2">Test 2</option> 
      <option value="test3" selected="selected">Test 3</option> 
     </select> 
    </div> 

И следующий сценарий:

<script type="text/javascript"> 
    $.ready = function() { 
     var selectedItems = $("#mySelect option:selected"); 
     for (var i = 0; i < selectedItems.length; i++) { 
      alert("The value is: "+selectedItems[i].value + "; the text is: "+selectedItems[i].text); 
     } 
    } 
</script> 

будет, вероятно, решить вашу проблему.

Фактически, привязка данных вручную - это огромная боль, и я рекомендую посмотреть современные библиотеки MVVM, такие как knockout.js. Например: http://knockoutjs.com/examples/controlTypes.html

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