Ajax;选中3个项目后,JavaScript多选onchange失败


Ajax & JavaScript Multiple Select onchange failing after 3 selected items

我有一个带有以下代码的选择输入:

<select name="color" id="color" multiple class="form-control chzn-select" tabindex="8" onchange="autosave(this.id,this.value)">

它成功地发送了函数ID和选择值,但由于可以选择多个项目,因此出现了问题。我最多可以选择3个项目,但尝试选择第4个项目会导致它超过第一个选择项目的值。不是最近选择的项目。这是一个功能,它发送其他信息,如标题和日期(都是文本输入):

function autosave(inputid,values) {
var dataObj = {};
dataObj[inputid] = values;
  $.ajax({
      type: "POST",
      url: "save.php",
      data: dataObj,
      success: function(msg) {
          $('#autosavenotify').text(msg);
          console.log('success');
      }
  })
}

在HTML方面,如果有区别的话,我会使用Bootstrap3,下面是我如何填充选择选项:

<?php
$colors = array('Red','Blue','Yellow','Purple','Green','Orange');
foreach($colors as $c) {
    $selected = '';
    if(in_array($c, $_SESSION['array']['colors'])) {
        $selected = 'selected';
    }
    echo '<option value="'.$c.'" '.$selected.'>'.$c.'</option>';
}
?>

你知道为什么会发生这种事吗?我的save.php页面成功地将所有项目放置在数组中,ajax只是出于某种原因发送了不正确的值。

因为您已经在使用jQuery,所以最好只使用$(this).val( )从您的选择中获取所选选项。这是我用你提供的代码想出的一把小提琴:http://jsfiddle.net/y7NfF/1/

您可能考虑采用的另一种方法是使用jQuery的.serialize().serializeArray()函数,在通过ajax提交数据时获取表单的所有值。但是,如果您想一次处理一个元素,那么您的方法就可以正常工作。

以下是这些功能的几个链接:

http://api.jquery.com/serialize/

http://api.jquery.com/serializeArray/