Javascript 在多选中,我需要能够获取当前所选选项的值
编辑:我想我已经把你们搞糊涂了。如果我选择val1,我需要函数返回val1。如果我选择了val2,而val1仍然作为multi-select的一部分被选中,那么我需要返回val2。然后,我可以使用这些值设置重新创建的输入的id和名称 我有一个选择列表,它有multiple=multiple 我想创建一个与每个选定选项关联的文本输入,并根据每个新选定选项的值设置新输入的id和名称,但我总是从onchange事件中获取第一项的值。不是第一个值,而是第一个选定值。因此,如果我先选择val2,则返回,但如果我先选择val1,则val2的id和名称将与选择val1时相同Javascript 在多选中,我需要能够获取当前所选选项的值,javascript,jquery,multi-select,Javascript,Jquery,Multi Select,编辑:我想我已经把你们搞糊涂了。如果我选择val1,我需要函数返回val1。如果我选择了val2,而val1仍然作为multi-select的一部分被选中,那么我需要返回val2。然后,我可以使用这些值设置重新创建的输入的id和名称 我有一个选择列表,它有multiple=multiple 我想创建一个与每个选定选项关联的文本输入,并根据每个新选定选项的值设置新输入的id和名称,但我总是从onchange事件中获取第一项的值。不是第一个值,而是第一个选定值。因此,如果我先选择val2,则返回,但
<select id="multiSelect" multiple="multiple">
<option value="val1">Value 1</option>
<option value="val2">Value 2</option>
<option value="val3">Value 3</option>
</select>
这将返回第一个选定的选项。如果我选择第二个选项,我仍然会得到第一个值。我需要得到所选选项的值
<select id="multiSelect" multiple="multiple">
<option value="val1">Value 1</option>
<option value="val2">Value 2</option>
<option value="val3">Value 3</option>
</select>
提前感谢。您可以在更改时获得所选的值: $multiSelect.on'change',函数{ var selected=$.map$“选项:selected”,此, 函数e{ 返回$e.val; }; 被选中的人; }; 值1 价值2 价值3 试试这个: $multiSelect.on'change',functionevt,params{ $myDiv.append }; 值1 价值2 价值3
解决方法是保存以前选定的图元,并将其与新选定的图元进行比较:
也许这就是你想要的,或者不是:D
它显示所有选定的元素,而不是新单击的元素。不错的一个@Regent,但如果您取消选择一个选项,则该值为空,如果您取消选择所有元素,则该值为空。
var selected = [];
$("#multiSelect").on('change', function()
{
var value = $(this).val();
if (!value)
{
selected = [];
alert("No value is clicked");
return;
}
var newSelected = value;
var changedOnes = [];
var direction = (newSelected.length < selected.length);
for (var i = 0; i < newSelected.length; i++)
{
var isNew = true;
for (var j = 0; j < selected.length; j++)
{
if (newSelected[i] == selected[j])
{
isNew = false;
break;
}
}
if (isNew || direction)
{
changedOnes.push(newSelected[i]);
}
}
selected = newSelected;
alert(changedOnes);
});
<select id="multiSelect" multiple="multiple">
<option value="val1">Value 1</option>
<option value="val2">Value 2</option>
<option value="val3">Value 3</option>
</select>
<script type="text/javascript">
var items = [];
$("#multiSelect").on('change', function(evt, params) {
var selected = $(this).val() || [];
if (selected.length == 0)
items.length = 0;
else {
$.each(selected, function(i) {
if (items.indexOf(selected[i]) == -1) {
items.push(selected[i]);
alert(selected[i]);
}
});
}
});
</script>