2010-12-06 2 views
0

Dojo 1.5와 템플릿 툴킷을 사용하는 웹 애플리케이션을 상속했습니다. 학습 도장을 즐기고 있지만 속도가 느립니다. 처음dojo.xhrPost에서 자동 완성 텍스트 상자로 데이터 소스 묶기

웹 양식을 데리고 때, 우리가 같은 페이지의 오른쪽에있는 파일의 목록을해야합니다 .... 왼쪽에서

AAA_text 
BBB_text_1 
BBB_text_2 
CCC_text 
.... 
.... 

우리는 검색 상자를 가질 수 사용할 파일의 하위 집합을 묻습니다. 일반적으로 우리는 "AAA"라고 입력하면 오른쪽 아래의 div가 상자 아래의 "검색"키를 누른 후 일치하는 파일을 찾습니다.

우리가하고자하는 것은 "검색 상자"를 제거하고 "AAA"가 입력 될 때 "AAA"와 일치하는 파일 목록을 오른쪽 div에 올리도록하는 것입니다 (또는 "BBB"또는 "CCC"등).

간단히 말해서 검색 상자에 모든 키를 입력 한 후에 "검색"버튼을 누르면 동일한 결과가됩니다.

현실적인 목표 또는 가능한 소리가 들립니까? 코드 자체는 1 톤의 템플릿 Tookit을 사용하므로 어떤 주요 재 작성도하지 않을 것입니다.

내가 분명히하지 않을 경우 알려주십시오. 나는 명확하게 설명 할 수있다. 많은 많은 감사합니다! Janie

편집 : 좋아요, 지금까지 많은 문제가 해결되었으므로 많은 것들이 할 수있는 성향을 가지고 있기 때문에 실제로 필요한 것은 분명합니다. 자동 완성 작업을 만드는 방법에 대해. 즉, 텍스트 상자에 데이터 소스가 있지만 실제로 텍스트 상자에 연결하는 방법을 알 수 없습니다. 나는 값 잡기를 처리 할 수있는 dojo.xhrPost 루틴을 가지고있다. 도장 자동 완성 예제를 인터넷 검색을

그것은 다음과 같습니다 ....

dijit.byId('files_matching').getValue(), 

나에게 도움이 증명이되는 엄청나게 많은 링크 없음을 제공합니다. 그래서 내 질문이 전환 된 것으로 가정합니다.
1. 단순한 텍스트 상자에 자동 완성 기능을 사용할 수 있습니까? (콤보 상자에서만 사용할 수 있다고 말하는 링크를 보았습니다)
2. 있습니까? dojo.xhrPost를 사용하여 dojo 텍스트 상자를 데이터 소스에 연결하는 방법을 자세히 설명하는/보여주는 어딘가의 링크.
이봐 요, 저는이 문제를 해결하는 데 너무 가깝습니다. 그리고 나는 여전히 나 앞에서 커다란 틈을 가지고있는 것처럼 보입니다. JW

+0

FilteringSelect라는 Dojo 양식 컨트롤이 있습니다. 그것이 당신이 찾고있는 것일 수 있습니까? http://dojocampus.org/explorer/#Dijit_Form%20Controls_Filtering%20Select_Basic – DanneManne

+0

@DanneManne : 거의. 나는 이것이 처음부터 코딩되어야하는 좀 더 많은 것이라고 생각하지만, 정말로 당신의 도움에 감사드립니다. 그게 제가 여기있는 규범입니다. JW –

답변

2

코드를 보지 않고도 말하기는 어렵지만 아직 가지고 있지 않다면 ItemFileReadStore 또는 유사 항목을 만드는 것이 좋습니다. 그렇게하면 모든 키 스트로크 후 서버 요청 없이도 클라이언트에서 로컬로 저장소를 쿼리 할 수 ​​있습니다.

그것은이 같은 것을 볼 수 있었다 :

var file_store = new dojo.data.ItemFileReadStore({ data: { 
    items: [{ name:"AAA_text" }, 
      { name:"AAA_text_1" }, 
      { name:"BBB_text_2" }] 
}}); 

당신이 장소에 당신이 당신의 텍스트 입력의 OnChange 이벤트에서 함수를 호출 할 수 있습니다

<input type="text" onchange="query_store(this.value);" /> 

을 그리고 당신은 실제 쿼리 처리 onchange 이벤트에서 호출 된 함수에서 :

var query_store = function(search_for) { 

    var my_query = { name: search_for+"*" }; // * for wildcard match 

    completed = function(items, result){ 
    for(var i = 0; i < items.length; i++){ 
     var value = file_store.getValue(items[i], "name"); 
     alert(value); // Instead of alert, you can save the values to your div. 
    } 
    }; 

    file_store.fetch({ query: my_query, onComplete: completed }); 
} 

이것에 대한 정보는 찾을 수 있습니다 here

희망 조금 이상적입니다.

+0

야! 너 락! 이것은 의미가 있으며 내일 아침에 테스트 해 보겠습니다. –

+0

OK! 이 질문에 대한 답변입니다! 나는 DanneManne이 올바른 길로 나를 세웠을 때 조금 더 깊이 파고 들었다. 이것은 선택된 답변이며 DanneManne에게 나의 구출에 대한 감사의 말입니다. (이것은 내가 더 이상 머리카락을 찢어 버리면 나는 추악한 사람이 될 수 있기 때문에 좋습니다). LOL .... Janie –

+0

다행히 당신이 그것을 해결했다고 들었습니다. 그리고 조금 더 파헤쳐 보면, 아마 훨씬 더 많은 것을 배웠을 것입니다 :) – DanneManne

관련 문제