【问题标题】:List.js apply filter by defaultList.js 默认应用过滤器
【发布时间】:2019-01-05 21:58:29
【问题描述】:

我是 Javascript 的初学者,希望获得一些使用 List.js 库的指导。到目前为止,我已经创建了过滤器并且它们能够工作。但我希望默认表已经应用了过滤器“待交付”,因为这将是最常访问的页面。

HTML (已经有过滤器的代码)

     <table class="order-table table table-hover table-striped">
             <thead>
                 <th>S/N</th>
                 <th>Order ID</th>
                 <th>Customer Name</th>
                 <th>Route Number</th>
                 <th>Order Date</th>
                 <th>Delivery Date</th>
         <th>Status</th>
             </thead>
             <tbody class="list">
            <tr>
                 <td>1</td>
                 <td class='orderId'>5</td>
                 <td>Matilda Tan</td>
                 <td>16</td>
         <td>2018-06-29</td>
         <td>2018-06-29</td>
                 <td class='sts'>Pending Delivery</td>  
         </tr>
        <tr>
                 <td>2</td>
                 <td class='orderId'>7</td>
                 <td>Xena Yee</td>
                 <td>01</td>
         <td>2018-06-21</td>
         <td>2018-06-23</td>
                 <td class='sts'>Delivered</td> 
         </tr>
            <div class="no-result">No Results</div>
            <ul class="pagination"></ul>
        </div>
    </div>
</div>

JS

var options = {
    valueNames: [
        'name',
        'sts',
        { data: ['status']}
    ],
    page: 5,
    pagination: true
};
var userList = new List('users', options);

function resetList(){
    userList.search();
    userList.filter();
    userList.update();
    $(".filter-all").prop('checked', true);
    $('.filter').prop('checked', false);
    $('.search').val('');
    //console.log('Reset Successfully!');
};

function updateList(){
  var values_status = $("input[name=status]:checked").val();
    console.log(values_status);

    userList.filter(function (item) {
        var statusFilter = false;

        if(values_status == "All")
        { 
            statusFilter = true;
        } else {
            statusFilter = item.values().sts == values_status;
        }
        return statusFilter
    });
    userList.update();
    //console.log('Filtered: ' + values_gender);
}

$(function(){
  //updateList();
  $("input[name=status]").change(updateList);

    userList.on('updated', function (list) {
        if (list.matchingItems.length > 0) {
            $('.no-result').hide()
        } else {
            $('.no-result').show()
        }
    });
});

【问题讨论】:

    标签: javascript list.js


    【解决方案1】:

    您有重复的 ID。这是一个错误,因为 ID 必须是唯一的。

    如果您需要从 All 更改为 Pending Delivery 选中,只需更改您的 html 将 checked 属性从当前位置移动(全部)到待交付位置。

    之后,在您的 dom 就绪函数中的 $("input[name=status]").change(updateList); 之后调用您的 updateList();

    您更新的codepen

    代码中的简短更改:

    $(function(){
      //updateList();
      $("input[name=status]").change(updateList);
    
      updateList();  // this line added
    
        userList.on('updated', function (list) {
            if (list.matchingItems.length > 0) {
                $('.no-result').hide()
            } else {
                $('.no-result').show()
            }
        });
    });
    
    <div class="container">
        <div class="row">
            <div id="users" class="col-xs-12">
                <div class="filter-group row">
                    <div class="form-group col-xs-12 col-sm-12 col-md-4">
                        <input type="text" class="search form-control" placeholder="Search" />
                    </div>
                    <div class="form-group col-xs-12 col-sm-12 col-md-4">
                        <div class="radio-inline">
                            <label>
                                <input class="filter-all" type="radio" value="All" 
          name="status" id="status-all"/> All <!--  removed checked -->
                            </label>
                        </div>
                        <div class="radio-inline">
                            <label>
                                <input class="filter" type="radio" 
        value="Pending Delivery" name="status" id="status-pending"  checked/> 
          Pending <!--  added checked -->
                            </label>
                        </div>
        .......
    

    【讨论】:

    • 哦,我明白了。太感谢了!真的很感激
    猜你喜欢
    • 2015-11-21
    • 2021-03-11
    • 2014-09-11
    • 2012-10-15
    • 2012-05-03
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多