2016-05-07 6 views
0

私はWinJS.UI.AutoSuggestBoxを使用しています。 私はsuggestionCollectionからアイテムを選択するたびに、そのアイテムが入力に表示されますが、他の場所をクリックすると(入力がフォーカスを失うと)、そのアイテムは入力から検索テキストに戻ります。WinJS AutoSuggBoxは選択した候補を保存します

例のように:http://winjs.azurewebsites.net/#searchbox

フォーカスを失った後にAutoSuggBoxで保存するために選択テキストを作成するにはどうすればよいですか?

私はWinJSの例をいくつか書いてありがたいですが、私は新しい人です。私は、何十枚もの投稿を見ることなく、すばやく必要なものを見つけるためにいつも問題があります。

答えて

1

ここで重要な点は、AutoSuggestBoxの設計上の経験ではないことです。これは、入力コントロールがフォーカスを失ったときに保存されるため、ユーザーが時間の経過とともに入力を引き続き調整できるように設計されています。ところで

、あなたはそれをハックする本当に良い理由がある場合は、ここではどのようにある:

1.Youはどこか、選択の提案を保存する必要があります。

var lastQuery; 

function querySubmittedHandler(eventObject) { 
    var queryText = eventObject.detail.queryText; 
    lastQuery = queryText; 
    ... 
} 

2.Youはに加入する必要があります入力コントロール内のonblurイベントこのコントロールが動的に作成されるように、それはトリッキーなものです:

var box; 
WinJS.UI.processAll().then(function(){ 
    box = document.getElementById("autoSuggestBox"); 
    // this is how to get internal input 
    box.winControl.element.querySelector("input").onblur = onblurinput; 
    // alternative 
    // document.querySelector("#autoSuggestBox input").onblur = onblurinput; 
}); 

は3.Insideは、手動入力のテキスト値を更新onblurhandler:

function onblurinput() { 
    box.winControl.queryText = lastQuery; 
} 
+0

は、それが動作する、ありがとうございます。私はそれがより簡単だろうと思った。私はいつもAutoSuggestBoxが "google search suggestion"として動作することを期待しています。 – Milos

+0

AutoSuggestBoxのすべての文字列値にidを付けることは可能ですか?私はその配列を取ることがわかりますが、オブジェクト配列ではうまくいかないでしょう。たぶんいくつかのテンプレートですか? これはもう一つの質問ですが、答えが短い場合は、なぜですか。ありがとう! – Milos

+0

申し訳ありませんが、どうしてうまくいかないのですか? – Konstantin

関連する問題