====== Texteingabe mit Auswahlempfehlung ======

Die "Texteingabe mit Auswahlempfehlung" sieht für den Befragten zunächst aus wie eine gewöhnliche Texteingabe-Frage. Sobald er allerdings einige Zeichen in das Eingabefeld einträgt, werden passende Auswahloptionen angeboten, die durch Tastatur (Pfeiltasten) oder Mausklick ausgewählt werden können.

{{:de:create:questions:scr.suggest.png?nolink|Texteingabe mit Auswahlempfehlung}}

Wird eine der Auswahloptionen gewählt oder manuell eingetragen, wird im Datensatz direkt der zugehörige (numerische) Code gespeichert -- die Antworten werden also direkt kodiert.

Sofern es die Frage erlaubt, etwas anderes als die vorgegebenen Optionen einzutragen, wird diese Eingabe als Text (in einer anderen Variable) im Datensatz gespeichert.

===== Vor- und Nachteile =====

Die Texteingabe mit Auswahlempfehlung ist vor allem dann hilfreich, wenn es in einer Frage sehr viele Antwortmöglichkeiten gibt -- und andere Fragetypen wie Dropdown oder sichtbare Auswahl deshalb zu unübersichtlich sind. Weiterhin ist die Auswahlempfehlung intuitiver, wenn neben den vorgegeben Auswahloptionen auch offene Antworten möglich sind.

Allerdings ist zum Antworten zwingend ein Wechsel von Maus- zu Tastaturbedienung erforderlich -- gerade auf Mobilgeräten ([[:de:create:smartphones|Fragebögen für Mobilgeräte]]) ist eine Dropdown-Auswahl u.U. einfacher zu beantworten.

Weiterhin geht dieser Fragetyp -- im Vergleich zu einer gewöhnlichen [[select|Auswahlfrage]] -- mit etwas mehr Aufwand bei der Auswertung einher. Denn wenn ein Teilnehmer die vorgegeben Antworten noch verändert oder ergänzt (z.B. "Ich habe kein Handy, weil ich es nicht brauche" statt der Vorgabe "Ich habe kein Handy"), können diese nicht mehr automatisch kodiert werden.


===== Auswahloptionen =====

Die Antwortoptionen werden zusammen mit einem Antwortcode und (optional) Suchbegriffen definiert. Text und Suchbegriffe können durch einen Tabulator oder ein Semikolon ('';'') getrennt werden. Zwischen numerischem Antwortcode und Text genügt auch ein Leerzeichen.

  00 Text der Auswahloption A
  01 Text der Auswahloption B; Suchbegriff B1; Suchbegriff B2

Die Suchbegriffe sind für den Teilnehmer nicht sichtbar, werden aber bei der Anzeige passender Auswahloptionen berücksichtigt: Wenn beispielsweise als Suchbegriff für "Deutschland" auch "Germany" eingetragen wurde, erscheint die Auswahloption "Deutschland" auch denn, wenn der Teilnehmer "ger" eingetippt hat. 

Die folgenden Auswahloptionen erlauben die Auswahl von 5 Orten. Trägt der Befragte die PLZ eines Ortes ein, erscheint der entsprechende Ort als Auswahlempfehlung:

<code>
01 Augsburg; 86150; 86152; 86153; 86154; 86156; 86157; 86159; 86161; 86163; 86165; 86167; 86169; 86179; 86199
02 Bergen; 83346
03 Chiemsee; 83256
04 Darmstadt; 64283; 64285; 64287; 64289; 64291; 64293; 64295; 64297
05 Erding; 85435
</code>


===== JavaScript-Anbindung =====

Für jede Texteingabe mit Auswahlempfehlung wird ein JavaScript-Objekt der Klasse ''SoSciSuggest'' erstellt. Der Name des Objekts beginnt mit ''suggest'', gefolgt von der Kennung der Frage und (falls die Frage mehrere Eingabefelder erlaubt) ''e'' und der zweistelligen Nummer des Eingabefelds.

  * Eine Frage mit der Kennung "TA01" und einem Eingabefeld würde also im JavaScript-Objekt ''suggestTA01'' abgebildet.
  * Eine Frage mit der Kennung "TS02" und zwei Eingabefeldern würde das erste Eingabefeld im Objekt ''suggestTS02x01'' abbilden.

Das Objekt besitzt eine Eigenschaft ''value'', welche den (Text-)Inhalt des Eingabefelds zurückliefert.

Darüber hinaus unterstützt das Objekt die Methode ''addEventListener(String //EventID//, Function //Funktion//)'', welches bei Auswahl einer Option (//EventID// ''"change"'') oder bei Tastendrücken im Textfeld (//EventID// ''"keydown"'', ''"keypress"'', ''"keyup"'') die angegebene //Funktion// aufruft.

Bitte beachten Sie, dass das JavaScript-Objekt erst am Ende der Seite erstellt wird, Event Handler können also erst nach dem Laden der Seite registriert werden:

<code javascript>
<script type="text/javascript">
<!--
window.addEventListener("load", function() {
  suggestTA01.addEventListener("change", toogleFilter);
  suggestTA01.addEventListener("keyup", toogleFilter);
});
// -->
</script>
</code>