【问题标题】:Jquery - get array of checkbox valuesJquery - 获取复选框值的数组
【发布时间】:2014-07-17 13:27:01
【问题描述】:

我有一些复选框name="location[]" and checkbox有一个不同的值value="3"value="5" @ @ @ @ value="5" @ @ @ @等我想知道在jQuery中检查这些框时如何将值放在一个名为@ 987654324的数组内@?这是我的html:

<ul id="searchFilter">
<li class=""><input type="checkbox" name="location[]" class="cb_location" value="1">Toronto</li>
<li class=""><input type="checkbox" name="location[]" class="cb_location" value="3">New York</li>
<li class=""><input type="checkbox" name="location[]" class="cb_location" value="6">London</li>
<li class=""><input type="checkbox" name="location[]" class="cb_location" value="5">Paris</li>
<li class=""><input type="checkbox" name="location[]" class="cb_location" value="4">Berlin</li>             
</ul>

这是我目前得到的一个 jquery:

var $checkboxes = $("input:checkbox");
var opts = [];
$checkboxes.each(function(){
     if(this.checked){
     opts.push(this.name);
}

当我检查另一个项目时,这只会返回 location[] 并添加另一个 location[]

请帮忙。

我还有其他带有 price[]、sqft[] 的复选框...我希望将复选框保持在同一位置,因此 1 个数组中的数组...我希望这是有道理的。

【问题讨论】:

    标签: javascript jquery checkbox


    【解决方案1】:

    您可以使用:checked 选择器和map() 从一组匹配的元素中创建一个数组。试试这个:

    $(':checkbox').change(e => {
      let opts = $(":checkbox:checked").map((i, el) => el.value).get();
      console.log(opts);
    });
    
    /* alternative for IE support:
    $(':checkbox').change(function() {
      var opts = $(":checkbox:checked").map(function() {
        return this.value;
      }).get();
      console.log(opts);
    });
    */
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <ul id="searchFilter">
      <li class="">
        <input type="checkbox" name="location[]" class="cb_location" value="1">
        Toronto
      </li>
      <li class="">
        <input type="checkbox" name="location[]" class="cb_location" value="3">
        New York
      </li>
      <li class="">
        <input type="checkbox" name="location[]" class="cb_location" value="6">
        London
      </li>
      <li class="">
        <input type="checkbox" name="location[]" class="cb_location" value="5">
        Paris
      </li>
      <li class="">
        <input type="checkbox" name="location[]" class="cb_location" value="4">
        Berlin
      </li>
    </ul>

    我有多个复选框,location[]price[]sqft[] - 我怎样才能将它们保存在单独的数组中但仍在 opts 内?

    为此,您需要使用closest()map() 限制为当前的ul 元素:

    $(':checkbox').change(function() {
      let opts = $(this).closest('ul').find(":checkbox:checked").map((i, el) => el.value).get();
      console.log(opts);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <ul id="searchFilter">
      <li class="">
        <input type="checkbox" name="location[]" class="cb_location" value="1">
        Toronto
      </li>
      <li class="">
        <input type="checkbox" name="location[]" class="cb_location" value="3">
        New York
      </li>
      <li class="">
        <input type="checkbox" name="location[]" class="cb_location" value="6">
        London
      </li>
      <li class="">
        <input type="checkbox" name="location[]" class="cb_location" value="5">
        Paris
      </li>
      <li class="">
        <input type="checkbox" name="location[]" class="cb_location" value="4">
        Berlin
      </li>
    </ul>
    
    <ul id="searchFilter">
      <li>
        <input type="checkbox" name="price[]" class="cb_price" value="2">
        $200,000 to $299,999
      </li>
      <li>
        <input type="checkbox" name="price[]" class="cb_price" value="3">
        $300,000 to $399,999
      </li>
      <li>
        <input type="checkbox" name="price[]" class="cb_price" value="4">
        $400,000 to $499,999
      </li>
      <li>
        <input type="checkbox" name="price[]" class="cb_price" value="5">
        $500,000+
      </li>
    </ul>

    【讨论】:

    • 一如既往的优雅解决方案!
    • 这很好用,最后一个问题,我有多个复选框,location[],price[],sqft[]....如何将它们保存在单独的数组中?但仍在选择范围内......我仍然会接受你的回答,但你知道我会怎么做吗?
    • 我用第二组复选框更新了小提琴示例,以向您展示我的意思:jsfiddle.net/6zz5f/1
    • @user3723240 您需要使用closestmap 限制为当前的ul 元素,请参阅此更新:jsfiddle.net/6zz5f/2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    相关资源
    最近更新 更多