我有一个带有以下代码的选择输入:
<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只是因某种原因发送了错误的值。
答案 0 :(得分:0)
因为您已经在使用jQuery,所以最好只使用$(this).val( )
从您的选择中获取所选的选项。这是我用你提供的代码提出的一个小提琴:http://jsfiddle.net/y7NfF/1/
您可能考虑采用的另一种方法是使用jQuery的.serialize()
或.serializeArray()
函数在通过ajax提交数据时获取表单的所有值。但是,如果你想一次做一个元素,你的方法就可以了。
以下是这些功能的几个链接: