2017-01-10 4 views
0

select2 4.0.2를 사용하여 AJAX 조회를 수행하는 선택 상자를 제공합니다. 하지만 내가하고자하는 것은 입력을 시작할 때까지 <select>과 같은 <option> 태그의 옵션을 표시 한 다음 AJAX를 통해 서버로 이동하여 쿼리 문자열이 비어 있지 않은 경우 더 많은 검색을 수행하는 것입니다.select2에서 정적 값을 사용하고 아약스 검색

기본적으로 문제는 AJAX 쿼리가 조금 느리지 만 페이지로드시 첫 번째 결과를 미리로드 할 수 있다는 것입니다. <option>으로로드 할 필요가 없습니다. JSON 배열이나 기타 등등으로 채울 수 있습니다.

+0

당신은 보통의 선택을 입력 할 수 없습니다

data: (params) -> ret.q = params.term ret.page = params.page o = ({ id: $(e).val(), display_name: $(e).text() } for e, index in this.children() when index > 0) ret.options = o return JSON.stringify(ret) 

가 그럼 난 아약스 전화를 걸거나 로컬 데이터 사용 여부에 대한 결정 전송 기능을 선언합니다. ''를 사용하고 이벤트에'.select2()'를 추가하십시오. – PHPglue

+0

정상적인 선택을 입력 할 수 없다는 것을 알고 있습니다. 입력을 시작할 때까지 select2를 일반적인 선택과 같이 만드는 방법을 묻습니다. –

답변

0

이것이 결국 내가 한 일입니다. select2 아약스 옵션에서, 첫째, 데이터 함수에서 값과 텍스트를 옵션에서 숨긴다 (왜냐하면 나는 전달 함수에 액세스 할 수 없기 때문이다). 죄송이 커피 스크립트에 있습니다

transport: (params, success, failure) -> 
    # Get query string 
    params_data = $.parseJSON(params.data) 
    q = params_data.q 
    if !q || q.length < 3 
    q_reg = new RegExp(q, "i") 
    data = 
     incomplete_results: false 
     items: params_data.options.filter (element) -> 
     q_reg.test(element.display_name) 
    success(data) 
    else 
    $.ajax(params).done(success).fail(failure)