Как получить выбранный элемент по имени, а затем получить выбранное значение из раскрывающегося списка с помощью jQuery?

Я могу найти свой элемент select по имени, но мне трудно найти выбранное значение, связанное с ним.

Вот мой код ниже:

<select  name="a[b]" onchange='mySelectHandler("a[b]")'>
     <option value='Choice 1'>Choice 1</option>
     <option value='Choice 2'>Choice 2</option>

</select>

то в моем обработчике я использую:

function mySelectHandler(name){
     var mySelect = $('select[name=' + name)
     // try to get selected value
     // alert ("selected " + mySelect.val())
     console.log("object "+ mySelect.toSource());
  }

Результатом моей печати в журнале является:

object ({length: 0, prevObject: {0: ({}), context: ({}), length: 1}, context: ({}), selector: "select [name = a [b]" })

Любые идеи относительно того, как это сделать?

Ответ 1

Ваш селектор немного выключен, ему не хватает ]

var mySelect = $('select[name=' + name + ']')

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

var mySelect = $('select[name="' + name + '"]')

Ответ 2

Попробуйте следующее:

$('select[name="' + name + '"] option:selected').val();

Это позволит получить выбранное значение вашего меню.

Ответ 3

Удалите событие onchange из HTML-разметки и привяжите его в событии готовности документа

<select  name="a[b]" >
     <option value='Choice 1'>Choice 1</option>
     <option value='Choice 2'>Choice 2</option>
</select>​

и Script

$(function(){    
    $("select[name='a[b]']").change(function(){
       alert($(this).val());        
    }); 
});

Рабочий пример: http://jsfiddle.net/gLaR8/3/

Ответ 4

вместо

mySelect.toSource()

использование

mySelect.val()

Ответ 5

Ответ MrOBrian показывает, почему ваш текущий код не работает, с отсутствующим завершающим ] и кавычками, но вот более простой способ заставить его работать:

onchange='mySelectHandler(this)'

И затем:

function mySelectHandler(el){
     var mySelect = $(el)
     // get selected value
     alert ("selected " + mySelect.val())
  }

Или еще лучше удалить обработчик события inline и связать обработчик событий с jQuery:

$('select[name="a[b]"]').change(function() {
    var mySelect = $(this);
    alert("selected " mySelect.val());
});

Последнее должно быть в обработчике document.ready или в блоке script, который появляется после элемента select. Если вы хотите запустить ту же функцию для других выборок, просто измените селектор на то, что относится ко всем, например, все выбранные будут $('select'), или все с определенным классом будут $('select.someClass').

Ответ 6

Попробуйте это, чтобы получить значение из элемента select по Element Name

$("select[name=elementnamehere]").val();

Ответ 7

или вы просто можете сделать

$('select[name=a[b]] option:selected').val()

Ответ 8

Чтобы добавить сюда ответы, убедитесь, что между select и [name...

Неверно:

'select [name=' + name + ']'
       ^

Вправо:

'select[name=' + name + ']'