我有多个选择菜单,模式是:
<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更熟悉
答案 0 :(得分:1)
将警报更改为此选项以获取所选文本:
\$("select[id^='device'] option:selected").each(function() {
alert($(this).text());
});
答案 1 :(得分:1)
为了避免冗余DOM选择,请缓存device
元素,并使用它来获取所有元素的选定值
在devices
集中,使用find()
(docs)和selected-selector
(docs)来获取所选的<option>
元素。
然后使用map()
(docs)创建一个包含值的jQuery对象,然后get()
(docs)从对象中检索Array。
// 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
});