2017-11-14 8 views
1

내 질문에 체크 박스 다중 선택 드롭 다운을 사용하여 열의 필터를 적용이 원래 바이올린을 기반으로합니다 https://jsfiddle.net/x92c3qu2/데이터 테이블

이것은 내가 찾고 있어요 예를의 일종이다. 하지만 내 문제는 모든 값에 특수 문자 (예 : 둥근 괄호)가있는 경우 예가 작동하지 않는다는 것입니다.

내 코드입니다 - 원래 링크와 거의 유사한

$('#dropdown').multiselect({ 
    onChange: function(element, checked) { 

     var cities = $('#dropdown option:selected'); 

     var selected = []; 
     $(cities).each(function(index, city) { 
     selected.push([$(this).val()]); 
     }); 

     var regex = selected.join("|"); 

     $('#table').DataTable().column(1).search(
     regex, true, false, true 
    ).draw(); 
    } 
    }); 
}); 

https://jsfiddle.net/x92c3qu2/110/ - 당신이 "(파리) 프랑스"를 선택하면 는이에

이제 내게로 바이올린을 편집을 테이블에 레코드가 있더라도 결과가 표시되지 않습니다. 검색 (regax, 허위 사실, true)를 변경하여 시도

(-.하지만 작동하지 않습니다

는 "파리"를 선택하면, 그것은에 "파리"관련 두 기록을 보여줍니다 - 나에 따르면 이는 잘못된 값이 드롭 다운에서 선택하면 그것은 정확한 결과를 보여 주어야한다

특수 문자없이와의 여러 값을 선택하십시오 -... 결과가 이상한

하세요 더 이상의 설명이 필요한지 알려주십시오.

답변

0

정규식을 정확한 문자열과 일치 시키려면 검색 문자열을 ^$ 자로 캡슐화해야합니다. 어쨌든 문자열이 정확한 문자열과 일치해야한다면 search 메서드에서 smart 옵션을 비활성화 할 수 있습니다.

(파리) 프랑스에는 두 가지 문제점이 있습니다. 당신의 샘플에서 Paris_France으로 설정되어있는 option 엘리먼트의 값을 밀어 넣으려고하지만 테이블에서 찾으려는 항목은 여전히 ​​(Paris) 프랑스이므로 변경해야합니다. 값을 추가 할 때 두 번째 문제는 ( 당신이 경우 탈출해야 정규식에서 특수 문자 점이다 이런 식으로 뭔가를 고려하십시오

내가 편집 한

selected.push(['^(' + $(this).val().replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') +')$']);

내 제안 된 변경 JS fiddle.

+0

감사합니다. 문제를 해결했습니다. 건배 남자 .. !!! 문제는 적절한 Regex 부분을 적용 할 수 없다는 것입니다. 다시 한번 감사드립니다. –

+0

한 가지 더. 제공된 솔루션은 크롬 및 모질라에서 잘 작동합니다. 그러나 동일한 Regex는 IE 11에서 "DASH/HYPHEN"** 전에 공간이있을 때 작동하지 않습니다 **. IE 11, 버전 11.674.15063을 사용하고 있습니다. Regex 수정 시도했다. 또한 '\ s'을 사용해 보았습니다. 그러나 IE11에서는 작동하지 않았습니다. 아무도 도와 줄 수 있습니까? –

+0

예 : ABCD - WXYZ (크롬에서 작동), ABCD-WXYZ (크롬에서 작동). ABCD-WXYZ (IE11에서 작동). ** 그러나 **, ABCD - WXYZ (IE11에서는 작동하지 않음) –