【问题标题】:Adding multiple select options with jquery使用 jquery 添加多个选择选项
【发布时间】:2016-10-31 17:12:20
【问题描述】:

我已经创建了从左到右移动项目的功能,反之亦然。最重要的是,我将每个项目的option 值添加到一个隐藏的输入框中,以便稍后将其提交给服务器进行处理。 似乎当我尝试一次添加多个项目时,只有第一个项目被添加到隐藏的输入框中。

最后,我的隐藏输入字段应该是这样的:3233,2332,3234,1212,112

因为我会接受 Ruby on Rails 服务器端的参数来解析并执行任何操作(除非有更好的选择)。

这是我当前的代码:

$("#btnLeft").click(function(){
    var selectedItem = $("#hosts_assigned option:selected");
    $("#hosts_available").append(selectedItem);
    $("#hosts").remove(selectedItem.val());
});

$("#btnRight").click(function(){
    var selectedItem = $("#hosts_available option:selected");
    $("#hosts_assigned").append(selectedItem);
    var current_hosts = $("#hosts").val();
    $("#hosts").val(current_hosts + "," + selectedItem.val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <select id="hosts_available"size="30" multiple="multiple">
    <option value="1222">1.1.2.2</option>
    <option value="1232">1.1.2.2</option>
    <option value="1242">1.1.2.2</option>
    <option value="1252">1.1.2.2</option>
  </select>
  
  <select id="hosts_assigned" size="30" multiple="multiple">
    <option value="1111">1.1.2.1</option>
  </select>
  
</form>

  <button type="button" id="btnRight">&gt;&gt;</i></button>
  <br/>
  <button type="button" id="btnLeft">&lt;&lt;</i></button>

<br/><br/>
<input type="text" id="hosts" />

【问题讨论】:

    标签: javascript jquery html ruby-on-rails


    【解决方案1】:

    你得到的不止一个。

    你需要循环。删除后还需要循环

    function getHosts() {
      var current_hosts=[];
      $("#hosts_assigned option").each(function() {
        current_hosts.push($(this).val());
      });  
      return current_hosts.length>0?current_hosts.join(","):"";
    }
    $("#btnLeft").click(function() {
      $("#hosts_assigned option:selected").each(function() {
        $("#hosts_available").append(this);
      })
      $("#hosts").val(getHosts());
    });
    
    $("#btnRight").click(function() {
      $("#hosts_available option:selected").each(function() {
        $("#hosts_assigned").append(this);
      });  
      $("#hosts").val(getHosts());
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form>
      <select id="hosts_available" size="30" multiple="multiple">
        <option value="1222">1.1.2.2</option>
        <option value="1232">1.1.2.2</option>
        <option value="1242">1.1.2.2</option>
        <option value="1252">1.1.2.2</option>
      </select>
    
      <select id="hosts_assigned" size="30" multiple="multiple">
        <option value="1111">1.1.2.1</option>
      </select>
    
    </form>
    
    <button type="button" id="btnRight">&gt;&gt;</i>
    </button>
    <br/>
    <button type="button" id="btnLeft">&lt;&lt;</i>
    </button>
    
    <br/>
    <br/>
    <input type="text" id="hosts" value="" />

    【讨论】:

    • 太棒了。添加到第一项开头的逗号是否会搞砸任何事情? ,1211,2122,1223
    • 查看我的更改。当您将它们移回时,您忘记删除它们。此外,在创建数组时,请确保该字段中没有任何内容
    猜你喜欢
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    相关资源
    最近更新 更多