2013-11-25 66 views
0

我有下面的代碼的選擇輸入失敗:的Ajax和JavaScript的多選擇平變化後3個所選項目

<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

因爲您已經在使用jQuery,所以您最好使用$(this).val()從選擇中獲取選定的選項。這是我想出了用你提供的代碼小提琴:http://jsfiddle.net/y7NfF/1/

,你可能會考慮將使用jQuery的.serialize().serializeArray()功能通過Ajax提交數據時,讓你的表格的所有值的另一種途徑。但是,如果您想一次執行一個元素,那麼您的方法就可以正常工作。

這裏有幾個鏈接到這些功能:

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

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

+0

我扔在了幾次,但顯然不是在正確的地方。謝謝! – cfox