七度&光 2018-06-08 02:22 采纳率: 22.2%
浏览 13

阵列无法正常运作

When selecting a checkbox there are no values on my array. If you select multiple checkboxes sometimes it stored values. Mostly the last checkbox value stored on array. The purpose of this is to filter data from country and categories so I need to pull out Country and Category checkbox value and submit it as a post on a php file.

var selectedFilter = new Array();
        var selectedFilterCat = new Array();
        $('.filter-check').change(function(){
            
            $('.country').each(function(){
                if($(this).is(':checked')){
                    selectedFilter.push(  $(this).val() )   
                    /*console.log(selectedFilter);*/
                }else{
                    var index = selectedFilter.indexOf( $(this).val() )
                    /*console.log(index)*/
                    selectedFilter.splice(index, 1 )
                }
            })
                $('.category').each(function(){
                if($(this).is(':checked')){
                    selectedFilterCat.push(  $(this).val() )    
                }else{
                    var indexcat = selectedFilterCat.indexOf( $(this).val() )
                    /*console.log(index)*/
                    selectedFilterCat.splice(indexcat, 1 )
                }
            })
            
            
        
        console.log(selectedFilter);
        console.log(selectedFilterCat);
            
            //Ajax  
            var a = JSON.stringify(selectedFilter);
            var b = JSON.parse(a);
            var c = JSON.stringify(selectedFilterCat);
            var d = JSON.parse(c);
            $.ajax({
              method: "GET",
              url: "/wjo/call-job-list.php",
              data: { filter: b },
              success: function(result){
                $("#joblistings").html(result);
            }
            })
            
        })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="navcontainer">
    <ul>
    <li>
    <label class=" container-check">Australia
        <input class="filter-check country" type="checkbox" name="country" value="Australia">
    </label>
    </li>
    
    <li>
    <label class=" container-check">United Kingdom
        <input class="filter-check country" type="checkbox" name="country" value="United Kingdom">
    </label>
    </li>
    
    <li>
    <label class=" container-check">USA
        <input class="filter-check country" type="checkbox" name="country" value="USA">
    </label>
    </li>
    
    <li>
    <label class=" container-check">New Zealand
        <input class="filter-check country" type="checkbox" name="country" value="New Zealand">
    </label>
    </li>
    </ul>
    </div>
    <div id="navcontainer1">
    <ul>
    <li>
    <label class=" container-check">Vineyard / Viticulture
        <input class="filter-check category" type="checkbox" name="country" value="Vineyard / Viticulture">
    </label>
    </li><li>
    <label class=" container-check">Winemaking / Lab / Production
        <input class="filter-check category" type="checkbox" name="country" value="Winemaking / Lab / Production">
    </label>
    </li><li>
    <label class=" container-check">Harvest / Vintage 
        <input class="filter-check category" type="checkbox" name="country" value="Harvest / Vintage">
    </label>
    </li>
    <li>
    <label class=" container-check">Cellar Door
        <input class="filter-check category" type="checkbox" name="country" value="Cellar Door">
    </label>
    </li>
    <li>
    <label class=" container-check">General Management
        <input class="filter-check category" type="checkbox" name="country" value="General Management">
    </label>
    </li>
    <li>
    <label class=" container-check">Sales / Marketing / Retail / Distributor
        <input class="filter-check category" type="checkbox" name="country" value="Sales / Marketing / Retail / Distributor">
    </label>
    </li>
    </ul>
    </div>

</div>
  • 写回答

1条回答 默认 最新

  • from.. 2018-06-08 03:08
    关注

    Before splice you need to add condition for checking index value Also, I have added array value inside loop

            $('.filter-check').change(function(){
    
                var selectedFilter = new Array(); // UPDATED
                var selectedFilterCat = new Array(); // UPDATED
    
                $('.country').each(function(){
                    if($(this).is(':checked')){
                        selectedFilter.push(  $(this).val() )   
                        /*console.log(selectedFilter);*/
                    }else{
                        var index = selectedFilter.indexOf( $(this).val() )
                        /*console.log(index)*/
                        
                        if(index >= 0) // ADDED
                        selectedFilter.splice(index, 1 )
                    }
                })
                    $('.category').each(function(){
                    if($(this).is(':checked')){
                        selectedFilterCat.push(  $(this).val() )    
                    }else{
                        var indexcat = selectedFilterCat.indexOf( $(this).val() )
                        /*console.log(index)*/
                        if(indexcat >= 0)      // ADDED
                        selectedFilterCat.splice(indexcat, 1 )
                    }
                })
                
                
            
            console.log(selectedFilter);
            console.log(selectedFilterCat);
                
                //Ajax  
                var a = JSON.stringify(selectedFilter);
                var b = JSON.parse(a);
                var c = JSON.stringify(selectedFilterCat);
                var d = JSON.parse(c);
                $.ajax({
                  method: "GET",
                  url: "/wjo/call-job-list.php",
                  data: { filter: b },
                  success: function(result){
                    $("#joblistings").html(result);
                }
                })
                
            })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="navcontainer">
        <ul>
        <li>
        <label class=" container-check">Australia
            <input class="filter-check country" type="checkbox" name="country" value="Australia">
        </label>
        </li>
        
        <li>
        <label class=" container-check">United Kingdom
            <input class="filter-check country" type="checkbox" name="country" value="United Kingdom">
        </label>
        </li>
        
        <li>
        <label class=" container-check">USA
            <input class="filter-check country" type="checkbox" name="country" value="USA">
        </label>
        </li>
        
        <li>
        <label class=" container-check">New Zealand
            <input class="filter-check country" type="checkbox" name="country" value="New Zealand">
        </label>
        </li>
        </ul>
        </div>
        <div id="navcontainer1">
        <ul>
        <li>
        <label class=" container-check">Vineyard / Viticulture
            <input class="filter-check category" type="checkbox" name="country" value="Vineyard / Viticulture">
        </label>
        </li><li>
        <label class=" container-check">Winemaking / Lab / Production
            <input class="filter-check category" type="checkbox" name="country" value="Winemaking / Lab / Production">
        </label>
        </li><li>
        <label class=" container-check">Harvest / Vintage 
            <input class="filter-check category" type="checkbox" name="country" value="Harvest / Vintage">
        </label>
        </li>
        <li>
        <label class=" container-check">Cellar Door
            <input class="filter-check category" type="checkbox" name="country" value="Cellar Door">
        </label>
        </li>
        <li>
        <label class=" container-check">General Management
            <input class="filter-check category" type="checkbox" name="country" value="General Management">
        </label>
        </li>
        <li>
        <label class=" container-check">Sales / Marketing / Retail / Distributor
            <input class="filter-check category" type="checkbox" name="country" value="Sales / Marketing / Retail / Distributor">
        </label>
        </li>
        </ul>
        </div>

    </div>
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)