Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Fehlercode auf einer Seite meiner Umfrage (activateActionLink(); activateConfir)

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 1 month ago #233482 by holch

Ursprünglich war angedacht, die Antwortoptionen in einer Klappbox darzustellen, aber wenn das schlecht/nicht geht, dann wäre das auch ok denke ich.


Bei einer List mit über 190 Einträgen ist Autocomplete sicher die beste und benutzerfreundlichste Lösung. Wenn man durch 190+ Einträge in einem Klappbox runterscrollen soll ist das kein Spass.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

Please Log in to join the conversation.

More
2 years 1 month ago #233483 by Sarina22
Stück für Stück wird es! Vielen Dank für eure Antworten! So langsam bin ich davon überzeugt, dass ein autocomplete hier die bessere Lösung ist als drop-down, v.a. aufgrund der langen Liste. Der Vorteil beim drop-down war für uns, dass wir damit automatisch schon einen Zahlencode pro Land vergeben konnten, was die Auswertung ein kleines bisschen schneller gestaltet.

Besten Dank Joffm! Das autocomplete sieht sehr schön aus und funktioniert auch bei mir!

Zum Thema Zweisprachigkeit:
Hier würde ich gerne die von dir vorgeschlagene Lösung 2 ausprobieren: "mittels einer csv.Datei. Je nach Sprache wird die eine oder andere eingebunden."
Ich habe nun eine weitere Beispiel-Frage ("Q1Copy") erstellt und versucht darin den Code zum Aufruf einer Textdatei einzubauen (Tutorial 3.2.2. b. als Textdatei). Soweit verstehe ich auch alles denke ich. Ich habe eine csv.Datei in den Ressourcen der Umfrage hochgeladen (der Link zum Forumseintrag zum Einbinden der Datei war sehr hilfreich!) und deren Namen auch im Quellcode eingetragen. Es funktioniert allerdings (noch) nicht. Ich lade die aktuelle lss-Datei und die zugehörige csv.Datei hier hoch. Wo fehlt noch etwas?

Meine nächste Anfänger-Frage wäre dann, wie ich je nach Sprache unterschiedliche csv.Dateien anzeigen lassen kann. Geht das über den Quelltext in derselben Frage, mit LANG=="de" bzw. LANG=="en"?

Und dann habe ich noch entdeckt, dass man unter das Textfeld das plugin "checkBoxFor Text"
gitlab.com/SondagesPro/QuestionSettingsType/checkboxForText
einbauen könnte! Das wäre GENIAL, dann muss die Antwortmöglichkeit "keine Angabe" nicht in die Länderliste, sondern kann separat unter dem Text stehen. Ich belese mich mal hierzu und versuche das auch über javascript im Quellcode der Frage hinzubekommen.

 

File Attachment:

File Name: Laender_deutsch.csv
File Size:3 KB

 

File Attachment:

File Name: limesurvey...4(1).lss
File Size:53 KB

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 1 month ago #233505 by Joffm
Hallo,
also zunächst: Kreativ bist Du.
Da fügst Du ein ziemlich richtiges script ein, und dann folgt am Ende ein ziemliches Codegewirr.
Code:
<link href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" />
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/1.0.11/jquery.csv.min.js"></script>
<script type="text/javascript" charset="utf-8">
    $(document).on('ready pjax:complete',function() {
        var url = "/upload/surveys/{251594}/files/Laender_deutsch.csv";
        var country = new Array();
        $.get(url,function(data){
            fullArray = $.csv.toArrays(data);
            $(fullArray).each(function(i, item){
                country.push(item[0]);
            });
            $("#question{15243} input[type=text]:eq(0)").autocomplete({
            minLength: 2,
            source: country
        });
    });
});
</script>
Hier wäre das script eigentlich zu Ende. Aber jetzt kommt irgendwelcher Code, der aber nicht von <script>...</script> tags umschlossen ist.
 $(document).on('click',':checkbox[data-checkboxfor]',function(){ if($(this).is(":checked")){ $(":checkbox[data-checkboxfor][name='"+$(this).attr("name")+"']").not(this).prop('checked',false); $("#"+$(this).attr("data-checkboxfor")).val($(this).data('updatevalue')).trigger("keyup").prop("disabled",true); }else{ $("#"+$(this).attr("data-checkboxfor")).val("").trigger("keyup").prop("disabled",false); } $("#"+$(this).attr("data-checkboxfor")+"_datetimepicker.date-timepicker-group").trigger("dp.change"); }); $(function() { $(":checkbox[data-checkboxfor]:checked").each(function(){ $("#"+$(this).attr("data-checkboxfor")).prop("disabled",true); }); });

Ich weiß zwar, was es ist, aber nicht, was dies hier soll.
Es ist der js-code der "checkBoxForText.js".

Aber dies ist doch ein Plugin. Ein Plugin kann man im Plugin-Manager direkt hochladen und installieren.
Oder man entzippt es und fügt dies in den "plugins"-Ordner der LimeSurvey-Installation ein
 
Dann muss es im Plugin-Manager aktiviert werden. (Manchmal muss man auch noch vorher "Dateien scannen")
Und in den Settings gibt es einen neuen Menuepunkt
 

Das dazu.
Die zweite kreative Leistung war dies
var url = "/upload/surveys/{251594}/files/Laender_deutsch.csv";
und dies
$("#question{15243} input[type=text]:eq(0)").autocomplete({
Also, entweder man schreibt den Wert "hart" hinein, oder man benutzt die ExpressionScript-Variablen wie 
{SID} : SurveyID
{QID}: QuestionID
{SAVEDID}: ID der gegebenen Antwort in der Antworttabelle
{LANG}: Sprache
{TOKEN:ATTRIBUTE_1}: Wert des ersten zusätzlichen Attributs in der Teilnehmer-Tabelle
{EXPIRY}: End-Datum der Umfrage
oder was es sonst noch gibt.
Der Sinn liegt doch gerade darin, dass diese Variable immer durch den aktuellen Wert ersetzt wird.

Also bitte
var url = "/upload/surveys/{SID}/files/Laender_deutsch.csv";
und
$("#question{QID} input[type=text]:eq(0)").autocomplete({
Nicht "doppel moppeln" mit geschweiften Klammern und dann doch nichts, womit ExpressionScript etwas anfangen könnte.

So, genug gemosert.
Wenn wir dies alles korrigieren, ist es völlig in Ordnung.
Naja, fast.
Denn es passiert mit Deiner Datei dies:
 
Woran liegt es? 
Falsche Zeichencodierung.
Wie Du im script siehst, soll die Codierung "utf-8" sein. Deine Datei ist aber ANSI codiert.
Einfach in einem Text-Editor (z.B. Notepad++) ändern.
 

So, jetzt ist es endlich in Ordnung.

Kommen wir zur Zweisprachigkeit.
Das ist ja ganz einfach.
Du musst den Fragetext doch übersetzen. Und das script steht im Fragetext; es muss also auch "übersetzt" werden.
Daher ist die Übersetzung von "Laender_deutsch.csv" eben "Laender_english.csv". Mehr nicht.

Nächster Punkt: Numerische Codes
Im Grunde sind sie ja unnötig, da es sich hier ja ganz klar um eine nominale Variable handelt. Du kannst also nur Häufigkeiten rechnen. Und SPSS oder ein anderes Auswerte-Tool kann ja mit alphanumerischen Codes umgehen.
Man könnte sich allerdings vorstellen, "sprechende" Codes zu bilden. Soll heißen, im Code steckt zusätzlich der Kontinent, und die Region. Dies ließe im Auswerte-Tool dann schnell Gruppenbildungen auf diesen Ebenen zu.
Beispiel:
1. Kontinente: 1: Afrika, 2: Amerika, 3: Asien, 4: Australien&Ozeanien, 5:Europa
2. Regionen: 1:Nordafrika, 2: Westafrika, 3: Zentralafrika, 4: Ostafrika, 5:Südafrika
3. Länder: Am besten zweistellig.
Dann könnte der Senegal einen Code haben wie 1206 (Afrika,Westafrika, und die Ländernumer (als Ländernummer könnte man dann auch den zwei- oder dreistelligen ISO-Code benutzen)

Bewerkstelligen lässt sich dies auch ziemlich leicht mittels einer Frage vom Typ "langer Text", in welche als Vorgabe-Antwort alle Ländernamen in beiden Sprachen eingetragen werden mit eben diesem angehängten Code. Die Ländernamen werden alle durch angehängte Leerzeichen auf dieselbe Länge gebracht (z.B. 30 Zeichen) - ist in Excel schnell zu machen mit einer Formel - und der Code angehängt.
Mit einer Frage vom Typ "Gleichung" sucht man dann den Code mit einer Formel wie
{substr(strpos(QPool,Q1)+30,4)} - ganz ins Grobe gesprochen.
Aber es ist ja leicht zu sehen.
Mit "strpos" wird die Anfangsposition des Namens gesucht und 30 Stellen weiter wird mit "substr" ein 4 Zeichen langer Text herausgeschnitten.
Geht also.

Andere Möglichkeit - damit komme ich auf Dein ursprüngliches Drop-Down zurück.
Nivcht mit einer Frage vom Typ "Liste(Klappbox)", sondern auch mit einer Frage vom Typ "kurzer Text", wie im Tutorial, Kapitel 3.1. gezeigt
Hier wären auch Übertexte möglich wie
 
Da hierbei die Ländernamen im Fragetext stehen, gibt es kein Problem mit "max_input_vars".

Und jetzt komme ich einmal zu Deiner Länderliste.
Was willst Du eigentlich fragen?
In der Liste sind ja viele Gebiete, die zu anderen Staaten gehören. Wenn Du also daran interessiert bist, aus welchem Teil der Welt jemand kommt, ist die gesonderte Behandlung der französischen Departements "Martinique" und "Guadeloupe" in Ordnung.
Dann ist aber nicht ersichtlich, warum zwar Aruba vorhanden ist., Curacao und Bonaire, Saba, St. Eustatius, St.Maarten aber fehlen. Diese gehören doch alle zum "Königreich der Niederlande", zu welchem gehören:
1. Die Niederlande mit Bonaire, Saba, St. Eustatius
2. Aruba
3. Curacao
4. St. Maarten
Da ist es also schon unplausibel.
Denn der Teilnehmer hat ja nur die Chance "Königreich der Niederlande" einzugeben. Dann weißt Du auch nicht, woher er genau kommt.

Dann kommen die umstrittenen Gebiete (z.b. Westsahara, Transnistrien, ...)
Und einige Länder fehlen ganz einfach (Kosovo, Südsudan, )

Etwas anders, das mich stört, ist, dass einige Ländernamen nicht Deutsch, sondern in der Landessprache auftauchen (Cabo Verde, Cote d'Ivoire, Eswatini,...)
Dann tauchen Länder mehrmals auf. (Ost-Timor, und besonders interessant "Großbritannien", aber auch das "Vereinigte Königreich")

Langer Rede kurzer Sinn: Überarbeite die Liste sorgfältig
Diese hier finde ich nicht so schlecht. Es sind gleich beide Namen drin (deutsch - englisch)
[url] www.nationsonline.org/oneworld/countrynames_german.htm [/url]

Wie schon gesagt "Was ist die Frage"
Staatsangehörigkeit oder Herkunftsregion?
Der erste Fall ist klar; die 197 Staaten sind ja fest.
Beim zweiten kommst Du "in Teufels Küche", da dann ja jede Fitzel-Insel aufgeführt werden müsste
Und dafür würde ich dem Teilnehmer einfach eine Karte auf dem Bildschirm präsentieren, wo er dann den Marker entsprechend setzt.

So, jetzt habe ich viel geschrieben.
Dafür gibt es auch eine Datei.
 

File Attachment:

File Name: limesurvey... (2).lss
File Size:61 KB


Viel Erfolg
Joffm

P.S.
Es gibt - glaube ich - auch eine andere Implementierung des autocompletes, wo eine Wert angezeigt, ein anderer aber gespeichert wird.
Das würde dann die numerischen Codes betreffen.
Aber frag mich nicht weiter dazu. Ich werde sehen.

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Attachments:

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 1 month ago #233552 by Joffm
Kleiner Zusatz:
Um numerische Codes zu erhalten, trotzdem aber alphanumerisch zu suchen, kannst Du dieses plugin benutzen
[url] gitlab.com/SondagesPro/QuestionSettingsType/autoComplete [/url]
Mit einer so strukturierten Liste
004,Afghanistan
818,Ägypten
248,Åland
008,Albanien

kann man dann dies erzeugen

  

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

More
2 years 4 weeks ago #233616 by Sarina22
Hi Joffm,

allerbesten Dank für deine ausführlichen Antworten vom Mittwoch und Donnerstag!! Ich wollte mich jetzt schonmal dafür bedanken, auch wenn ich aus Zeitgründen noch nicht alles umsetzen konnte. Ich hoffe die nächste Woche lässt mir wieder Zeit dafür! Die Länder-Liste ist auf jeden Fall schon ausgebessert (die Website ist super), an den weiteren Dingen feile ich beizeiten. Ich melde mich dann, wie mein finaler Stand ist :)

Nochmal ein ganz großes DANKE und ein schönes Wochenende!
Sarina

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose