2010-12-06 4 views
0

Dojo 1.5とテンプレートツールキットを使用するWebアプリケーションを継承しました。私は学習道場を楽しんでいますが、それは遅いペースであります。当初dojo.xhrPostからオートコンプリートのテキストボックスにデータソースを結ぶ

ウェブフォームを立ち上げるとき、私たちはそうのようなページの右側にあるファイルのリストを持っています....左側

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

は、我々は検索ボックスを持っています使用するファイルのサブセットを尋ねます。通常は「AAA」と入力するだけで、右側のdivはボックスの下にある「検索」キーを押した後にそれらのファイルを検索して表示します。

"検索ボックス"を削除し、 "AAA"が入力されているときに右側のdivに表示される "AAA"と一致するファイルの一覧を表示することです(または "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

関連する問題