2009-11-24 72 views
0

我有2个多选框互相转移。转移两种方式都很好。我也调用ajax fn将选定的选项提交给数据库。 从左到右的呼叫工作正常,因为我只是获取所有选项,而不仅仅是选定的选项。jQuery获得选定的选项问题

var domelts = $('#imfavs option'); 
// next translate that into an array of just the values 
var buddylist = $.map(domelts, function(elt, i) { return $(elt).val();}); 

现在,当我尝试由右至左只有所选的选项中去,它总是返回一个空数组。

我尝试2种方式

var domelts = $('#imfavs :selected'); 
var removelist = $.map(domelts, function(elt, i) { return $(elt).val();}); 

$('#imfavs :selected').each(function (x) { 
    removelist[x] = $(this).val(); 
}); 

为:第二个,removelist之前var'd。

我的HTML

 <form method="post" name="frmFavs" id="frmFavs"> 
      <table> 
       <tr> 
        <td><strong>Current Friends</strong></td> 
        <td>&nbsp;</td> 
        <td><strong>SLS Chat Friends</strong></td> 
        <td>&nbsp;</td>       
       </tr> 
       <tr> 
        <td> 
         <select name="userfavs" multiple="multiple" size="25" id="userfavs"> 
          <cfoutput query="userfavs"><option value="#encrypt(userfavs.user2id,application.key,'DES','Hex')#">#userfavs.user2#</option></cfoutput> 
         </select> 
        </td> 
        <td> 
         <button type="button" style="height:100px;" id="add">&gt;</button><br /> 
         <button type="button" style="height:100px;" id="remove">&lt;</button> 
        </td> 
        <td> 
         <select name="imfavs" multiple="multiple" size="25" id="imfavs"></select> 
        </td> 
       <td valign="middle"><div id="info"></div></td> 
       </tr> 
      </table> 
     </form> 

任何帮助表示赞赏。

谢谢。

回答

3

代替

var domelts = $('#imfavs :selected'); 

尝试

var domelts = $('#imfavs option:selected'); 
+0

+1,伟大的思想......和51秒。 – karim79 2009-11-24 14:25:38

0

我尝试了你的代码,它似乎工作正常。

检查并确保选项具有值属性。

<option value="value1">value1</option>