2014-04-23 6 views
-1

У меня проблема при получении значений выбранных параметров.Получить значение выбранной опции из раскрывающегося списка с помощью jquery.

Позвольте мне объяснить, у меня есть список опций:

<select> 
    <option value='1'>Option1</option> 
    <option value='2'>Option2</option> 
    <option value='3'>Option3</option> 
    <option value='4'>Option4</option> 
    <option value='5'>Option5</option> 
</select> 

Я получаю значения, и я вставляет их в переменную для каждого выбранного варианта, и я положил их в массив, как это:

$("select option:selected").each(function() 
{ 
     var listValO = new Array(); 
     var idOption = $("select option:selected").val(); 
    listValO.push(idOption); 
}); 

Если я выбираю только один выбранный параметр, он работает, но когда я выбираю несколько параметров одновременно, каждая функция() вставляет в массив то же значение для количества выбранных параметров.

Когда я нажимаю кнопку отправки, массив содержит listValO несколько раз с тем же значением.

<select> 
    <option selected value='1'>Option1</option> 
    <option selected value='2'>Option2</option> 
    <option selected value='3'>Option3</option> 
    <option>Option4</option> 
    <option>Option5</option> 
</select> 

listValO возвращает всего 3 раза [1,1,1]. Фактически, он разделил первый, который я нажал, или я хочу в своем массиве [1,2,3].

Извините за ошибки на английском языке, если они есть. Надеюсь, вы понимаете мою проблему и благодарите вас за ваш будущий ответ.

+3

Используйте '$ («выбрать») Val();' – Satpal

+1

Вы должны установить атрибут 'multiple' для отборного элемента для того, чтобы иметь возможность выбрать несколько вариантов сразу, то. используйте предложение @ Satpal, которое вернет массив –

+0

возможный дубликат [jQuery получить конкретный текст тега опции] (http://stackoverflow.com/questions/196684/jquery-get-specific-option-tag-text) – jycr753

ответ

2

Как и другие ответы (используя несколько атрибутов, и с помощью $ (это)), вы повторно объявить массив для каждого вхождения выбранного варианта. Попробуйте объявить его вне:

var listValO = new Array(); 

$("select option:selected").each(function() 
{ 
     var idOption = $(this).val(); 
     listValO.push(idOption); 
}); 
+0

Thx это работает! :) и thx для других ответов! – jayensen

2

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

Вы должны использовать .val() вместо:

Markup:

<select multiple> 
    <option selected value='1'>Option1</option> 
    <option selected value='2'>Option2</option> 
    <option selected value='3'>Option3</option> 
    <option>Option4</option> 
    <option>Option5</option> 
</select> 

Javascript:

var optionsArray = $("select").val(); 
0

Вам нужно добавить атрибут мультипликатор в выберите, чтобы выбрать несколько значение:

<select multiple="multiple"> 
    <option selected value='1'>Option1</option> 
    <option selected value='2'>Option2</option> 
    <option selected value='3'>Option3</option> 
    <option>Option4</option> 
    <option>Option5</option> 
</select> 

Код Js: вы выполняете итерацию по выбранным параметрам, вы должны скорее перебирать себя, чтобы выбрать сам, чтобы гарантировать, что выбранные параметры будут добавлены в массив только один раз.

var listValO = new Array(); 
$("select").each(function() 
{ 
listValO.push($(this).val()); 
}); 
//console.log(listValO) for test purpose 

Working Demo

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