2017-11-23 8 views
2

재설정 링크를 누르면 표가 새로 고침되지만 <select> 옵션 목록을 새로 고치지 못합니다. (<option>을 요소에 넣지 않습니다.) 또한 새로 고침을 누른 후 새 선택 옵션을 클릭하면 하나의 선택 대신 두 개의 선택 옵션이있는 것처럼 표가 표시됩니다. (이전 테이블 선택 항목은 두 번째 테이블 선택 항목으로 표시됩니다.) 여기Datatables 및 ColumnFilterWidgets에 대한 재설정 링크가 선택을 다시 채우지 않습니다

내가 같은 문제에 배울 시도 이와 유사한 스레드입니다 :

jQuery DataTables and Columnfilterwidget Reset all filters button https://github.com/cyberhobo/ColumnFilterWidgets/issues/33

ColumnFilterWidgets 코드 : https://github.com/cyberhobo/ColumnFilterWidgets/blob/master/media/js/ColumnFilterWidgets.js DataTables 번호 : https://cdn.datatables.net/1.10.16/js/jquery.dataTables.js

내 JSFiddle : https://jsfiddle.net/suzyweb/9qzy0sb2/19/

var oTable = $('#example').DataTable({ 
    ajax: "https://api.myjson.com/bins/esbxz", 
    "sDom": 'W<"clear"><"toolbar">frtipl', 
    "oColumnFilterWidgets": { 
     "aiExclude": [0, 4, 5] 
    }, 
    }); 

    $.fn.dataTableExt.oApi.fnResetAllFilters = function(oSettings, bDraw /*/default true/*/) { 
    for (iCol = 0; iCol < oSettings.aoPreSearchCols.length; iCol++) { 
     oSettings.aoPreSearchCols[iCol].sSearch = ''; 
    } 
    $('.filter-term').remove(); 
    oSettings.oPreviousSearch.sSearch = ''; 
    if (typeof bDraw === 'undefined') bDraw = true; 
    if (bDraw) this.fnDraw(); 
    }; 

    $("div.toolbar").html('<a href="#" class="reset"><b>RESET</b></a>'); 

    $(".reset").click(function(e) { 
    e.preventDefault(); 
    //alert("You clicked refresh"); 
    //oTable.fnFilterClear(); 
    $('#example').dataTable().fnResetAllFilters(); 
    // oTable.search("").draw(); 
    }) 

}); 

내가 자바 스크립트 매우 새로 온 사람이 일을 해결하기 위해 노력에 정말 잃어버린 느낌! 나는 이것을 이해하려고 노력하면서 많은 시간을 보냈고 다른 사람들이 같은 배에 타고있는 것처럼 보이지만 어떻게해야 하는지를 알지 못합니다. 어떤 도움을 주셔서 감사합니다.

+1

위대한 질문 : 형식, 스타일, 링크, 샘플 ... 묻기 전에 작업을 시작한 신규 사용자를 보는 것이 좋습니다. –

답변

0

나는 ruslancer로부터 전문가의 도움을 구했고 여기에서 고정 코드를 게시하도록 허용하고 있습니다. 저를 위해이 문제를 봤던 다른 모든 사람들에게 감사드립니다!

$.fn.dataTableExt.oApi.fnResetAllFilters = function(oSettings, bDraw /*/default true/*/) { 
       var t = $("a.filter-term"); 
       for (var i=0; i<t.length; i++) { 
        $(t[i]).click(); 
       } 

       for (iCol = 0; iCol < oSettings.aoPreSearchCols.length; iCol++) { 
        oSettings.aoPreSearchCols[iCol].sSearch = ''; 
       } 
       $('.filter-term').remove(); 
       oSettings.oPreviousSearch.sSearch = ''; 
       if (typeof bDraw === 'undefined') bDraw = true; 
       if (bDraw) this.fnDraw(); 
      };