2011-01-18 1 views
1

У меня есть несколько выбирать меню, где картина:JQuery - ошибка с отображением выберите Вар-

<select name='device$num' id='device$num' size='8' multiple='multiple' >" 

Я хочу, чтобы отобразить значения, когда какой-либо один из этих избранных изменений.

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

<script> 
    \$("select[id^=device]").change(function() { 
     \$("#paramselection").html(" "); 
     \$("#voltageselection").html(" "); 

     // IF THE DATA HAS CHANGED, FIND OUT WHICH DATA SECTIONS ARE STILL VALID 

     \$("select[id^=device] :selected").val(function(index, value) { 
      alert(value); 
     }); 
    }); 
</script> 

Другой вопрос, как я совпадаю с таким шаблоном, что id^= device \ d +? К сожалению, я больше знаком с Perl

ответ

1

Для того, чтобы избежать избыточного выбора DOM, кэшировать device элементы, и использовать, чтобы получить выбранный значения всех из них

из devices набора, используйте find()(docs) с selected-selector(docs), чтобы получить выбранные <option> элементы.

Затем используйте map()(docs) для создания объекта jQuery, содержащего значения, затем get()(docs) для извлечения массива из объекта.

// cache all the "device" elements as you assign the "change" handler 
var devices = $("select[id^=device]").change(function() { 
    $("#paramselection").html(" "); 
    $("#voltageselection").html(" "); 

     // from the "devices" variable, find selected options, and 
     // create an Array of the values 
    var selected = devices.find('option:selected') 
          .map(function(){ 
           return this.value; 
          }).get(); 

    alert(selected); // will alert an array of the selected values 
}); 
+0

Привет, пробовал кодирование, и он работает для одного раздела. Однако я хочу предупредить все значения, которые в данный момент выбраны пользователем ... поэтому я попробовал var selected = $ ("select [id^device]"). Val(); но это не работает. – Gordon

+0

@ Gordon: Я неправильно понял. Я обновлюсь через несколько минут. EDIT: ответ обновлен. – user113716

+0

спасибо patrick, также спасибо за ссылки, где я могу изучить примеры – Gordon

1

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

\$("select[id^='device'] option:selected").each(function() { 
    alert($(this).text()); 
    }); 
+0

Вам не нужны кавычки в селекторе. – user113716

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