2016-05-07 4 views
0

Ich verwende WinJS.UI.AutoSuggestBox. Jedes Mal, wenn ich ein Objekt aus suggestionCollection auswähle, erscheint dieses Element in der Eingabe, aber wenn ich irgendwo anders klicke (Eingabe verliere Fokus), verschwindet dieses Element aus der Eingabe und mein Suchtext wird wieder eingegeben.WinJS AutoSuggestBox ausgewählten Vorschlag beibehalten

Das gleiche wie auf Beispiel: http://winjs.azurewebsites.net/#searchbox.

Wie kann ich meinen Auswahltext in AutoSuggestBox beibehalten, nachdem er den Fokus verloren hat?

Ich würde auch einige gute Dokumentation mit Beispielen für WinJS schätzen, ich bin ein Neuling, und ich habe immer Probleme, schnell zu finden, was ich brauche, ohne ein Dutzend Posts zu suchen.

Antwort

1

Der Punkt hier ist, dass was Sie wollen, ist keine gestaltete Erfahrung für die AutoSuggestBox. Es ist so konzipiert, dass der Benutzer seine Eingaben im Laufe der Zeit weiter verfeinern kann. Daher wird es beibehalten, wenn die Eingabesteuerung den Fokus verliert.

By the way, wenn Sie wirklich gute Gründe haben, es zu hacken, ist hier, wie:

1.You müssen irgendwo ausgewählten Vorschlag speichern:

var lastQuery; 

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

2.You müssen abonnieren das Onblur-Ereignis in der Eingabesteuerung. Es ist schwierig ein, da diese Steuerung dynamisch erstellt:

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 manuell den Textwert des Eingangs aktualisieren:

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

Danke, es funktioniert. Ich dachte, es wäre einfacher. Ich erwarte immer, dass AutoSuggestBox als "Google-Suchvorschlag" funktioniert, nicht so. – Milos

+0

Ist es möglich, ID mit jedem Zeichenfolgenwert in AutoSuggestBox zu setzen. Ich sehe, dass es Array nehmen, aber es würde nicht mit Objekt-Array arbeiten. Vielleicht mit einer Vorlage? Ich weiß, das ist eine andere Frage, aber wenn die Antwort kurz ist, warum nicht. Vielen Dank ! – Milos

+0

Sorry, was genau funktioniert nicht? – Konstantin