Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在多选中,我需要能够获取当前所选选项的值_Javascript_Jquery_Multi Select - Fatal编程技术网

Javascript 在多选中,我需要能够获取当前所选选项的值

Javascript 在多选中,我需要能够获取当前所选选项的值,javascript,jquery,multi-select,Javascript,Jquery,Multi Select,编辑:我想我已经把你们搞糊涂了。如果我选择val1,我需要函数返回val1。如果我选择了val2,而val1仍然作为multi-select的一部分被选中,那么我需要返回val2。然后,我可以使用这些值设置重新创建的输入的id和名称 我有一个选择列表,它有multiple=multiple 我想创建一个与每个选定选项关联的文本输入,并根据每个新选定选项的值设置新输入的id和名称,但我总是从onchange事件中获取第一项的值。不是第一个值,而是第一个选定值。因此,如果我先选择val2,则返回,但

编辑:我想我已经把你们搞糊涂了。如果我选择val1,我需要函数返回val1。如果我选择了val2,而val1仍然作为multi-select的一部分被选中,那么我需要返回val2。然后,我可以使用这些值设置重新创建的输入的id和名称

我有一个选择列表,它有multiple=multiple

我想创建一个与每个选定选项关联的文本输入,并根据每个新选定选项的值设置新输入的id和名称,但我总是从onchange事件中获取第一项的值。不是第一个值,而是第一个选定值。因此,如果我先选择val2,则返回,但如果我先选择val1,则val2的id和名称将与选择val1时相同

 <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>