Vraag & Antwoord

Webprogrammeren & scripting

JavaScript: MC-quiz, controle op antwoord

11 antwoorden
  • Hallo, <P>Ik wil met JavaScript controleren of een gebruiker een vraag beantwoord heeft. Het antwoord zelf is niet belangrijk, dat gebeurt met PHP en gaat prima. Alles wat ik hier wil is voorkomen dat iemand door de vragen springt zonder ze te maken. Omdat ik de functie niet telkens wil aanpassen aan de hand van de elementen, wil ik één functie die alle form-elements aankan. Alles komt in 1 form, want meerdere forms controleren lukt me niet goed, en geeft bekende problemen in Netscape. In de body staat een form met b.v. twee groepen checkboxes, NAME chk1 en chk2. Ook nog twee radiogroups, NAME rad1 en rad2. Aantal opties per groep verschilt. <P>In de header heb ik volgende functie geplaatst:<P>function MyInput() { var MyForm = document.forms[0]; for (var i=0; i&lt;(MyForm.elements.length); i++) { var MyElem = MyForm.elements[i]; if (MyElem.name.indexOf('rad')&gt;=0) { (MyElem.checked)? alert('rad'): alert('no rad'); } if (MyElem.name.indexOf('chk')&gt;=0) { (MyElem.checked)? alert('chk'): alert('no chk'); } } }<P>Wat hij doet, is per optie aangeven of deze geselecteerd is, en dat wil ik niet. Ik snap wat hierboven staat, maar na twee dagen proberen weet ik niet meer hoe ik dit kan aanpassen zodat hij alleen kijkt OF er iets is ingevuld per groep (hoeft niet per se goed te zijn). Diverse pogingen waren onsuccesvol, graag jullie hulp.<P>Grtz, <P> Pieter
  • Mooie naam (je echte dan <IMG SRC="images/smiles/icon_tongue.gif">).<P>Maar goed, waarom voer je die checks niet gewoon met PHP uit?<P>------------------ Bill Gates: Scharrel een ouwe doos op, en zet er Linux op :) Chiquita71: tja...hahahah om nu linux op mezelf te zetten vind ik wat ver gaan.
  • Het script hierboven is een deel uit het totale script; ik wil nog andere dingen controleren (en dát kan ik alleen in JavaScript), en afhankelijk van het resultaat gebruik ik een return om de gegevens al dan niet naar de server te sturen. Ik ben bang dat het geheel erg langzaam wordt als ik alles via de server ga doen. Tussen (): eerlijk gezegd zou ik ook niet direct weten hoe ik dit in PHP moet programmeren, ik ben er nog niet zo lang mee bezig en hoe meer geautomatiseerd, hoe lastiger. JavaScript heb ik meer ervaring mee.<P>Grtz, <P>Pieter (mooi?? ;-) )
  • Wat wil je controleren dan? Het moet bijna wel eenvoudiger zijn met PHP dan met Javascript, dus als je dat eens verteld, kan ik je wellicht van dienst zijn :smile:<P>------------------ Bill Gates: Scharrel een ouwe doos op, en zet er Linux op :) Chiquita71: tja...hahahah om nu linux op mezelf te zetten vind ik wat ver gaan.
  • <BLOCKQUOTE><font size="1" face="Arial, Helvetica, Sans Serif">quote:</font><HR>Originally posted by Bill Gates: <B>kan ik je wellicht van dienst zijn :smile: </B><HR></BLOCKQUOTE><P>zo zo, dat maak je niet vaak mee... Ben je in een goede bui? :P :grin:<P>t.
  • Misschien kan je hier iets mee:<P>&lt;script language="JavaScript"&gt;&lt;!-- // Antwoordmogelijkheden per vraag. antw1=4; antw2=2; antw3=3; antw4=5; // De rest van het script. teller=0; function controleer() { frm=document.forms[0]; for(i=0;i&lt;antw1;i++){ if(frm.elements[i].checked){ teller++; break;}} for(i=antw1;i&lt;(antw1+antw2);i++){ if(frm.elements[i].checked){ teller++; break;}} for(i=(antw1+antw2);i&lt;(antw1+antw2+antw3);i++){ if(frm.elements[i].checked){ teller++; break;}} for(i=(antw1+antw2+antw3);i&lt;(antw1+antw2+antw3+antw4);i++){ if(frm.elements[i].checked){ teller++; break;}} if(teller&lt;4){ alert('Niet alle vragen zijn beantwoord'); teller=0;} else{ alert('Alle vragen zijn beantwoord'); teller=0; } } //--&gt;&lt;/script&gt;<P>&lt;form&gt; &lt;input type="checkbox"&gt;Vraag 1 keuze 1&lt;br&gt; &lt;input type="checkbox"&gt;Vraag 1 keuze 2&lt;br&gt; &lt;input type="checkbox"&gt;Vraag 1 keuze 3&lt;br&gt; &lt;input type="checkbox"&gt;Vraag 1 keuze 4&lt;br&gt; &lt;hr&gt; &lt;input type="checkbox"&gt;Vraag 2 keuze 1&lt;br&gt; &lt;input type="checkbox"&gt;Vraag 2 keuze 2&lt;br&gt; &lt;hr&gt; &lt;input type="radio" name="rad1"&gt;Vraag 3 keuze 1&lt;br&gt; &lt;input type="radio" name="rad1"&gt;Vraag 3 keuze 2&lt;br&gt; &lt;input type="radio" name="rad1"&gt;Vraag 3 keuze 3&lt;br&gt; &lt;hr&gt; &lt;input type="radio" name="rad2"&gt;Vraag 4 keuze 1&lt;br&gt; &lt;input type="radio" name="rad2"&gt;Vraag 4 keuze 2&lt;br&gt; &lt;input type="radio" name="rad2"&gt;Vraag 4 keuze 3&lt;br&gt; &lt;input type="radio" name="rad2"&gt;Vraag 4 keuze 4&lt;br&gt; &lt;input type="radio" name="rad2"&gt;Vraag 4 keuze 5&lt;br&gt; &lt;hr&gt; &lt;input type="button" value="Check" onclick="controleer()"&gt; &lt;/form&gt;
  • <BLOCKQUOTE><font size="1" face="Arial, Helvetica, Sans Serif">quote:</font><HR>Originally posted by teacher: <B> zo zo, dat maak je niet vaak mee... Ben je in een goede bui? :P :smile: Beter opletten en niet constant aan je aanzoek denken <IMG SRC="images/smiles/icon_tongue.gif"><P>------------------ Bill Gates: Scharrel een ouwe doos op, en zet er Linux op :) Chiquita71: tja...hahahah om nu linux op mezelf te zetten vind ik wat ver gaan.
  • Zo, na de familiefondue van gisteravond kan ik gelukkig weer gewoon aan het werk :smile:. Bedankt voor het voorbeeldscript, alleen wil ik graag iets hebben dat standaard te gebruiken is. Ik kan ook wel diverse extra parameters doorgeven vanuit de functie-aanroep, maar dat wil ik zo min mogelijk. Dus het aantal vragen per keer nodig hebben in het script is dan lastig, bovendien moet ik het aantal script-lines aanpassen per vraag. Werkt misschien wel, maar is te omslachtig (ik heb ooit eens gelezen dat een goede programmeur lui is, en ik wil telkens beter worden :wink: ). <P>Bill: Wat mijn bedoeling is, is om te checken alvorens ik de gegevens doorstuur naar de server. Maar als ik het breder moet formuleren: ik wil voorkomen dat iemand mijn vragen niet maakt, maar direct naar de antwoorden gaat kijken ("eerst zelf nadenken", zei de juffrouw). Naast de gegevens van de form-elements zit er ook nog een drag&drop-interactie in, gemaakt met de Coursebuilder-plugin van Dreamweaver. Ik heb de code dusdanig ontcijferd dat ik alleen het benodigde deel in mijn functie kan aanroepen om te kijken of de drags op een target gedropped zijn, maar ik weet niet hoe dit in PHP zou moeten omdat ik dan moet gaan uitzoeken hoe ik die uitkomst als variabelen moet meegeven. <P>Grtz, <P> NewYearMan
  • Drag & drop? Mweuh? Dat mag je eens uitleggen...<P>------------------ Bill Gates: Scharrel een ouwe doos op, en zet er Linux op :) Chiquita71: tja...hahahah om nu linux op mezelf te zetten vind ik wat ver gaan.
  • Oké dan... ik maak een medisch-educatieve webpagina over neurologie, waar studenten de verschillende baansystemen in het ruggenmerg op de goede plek moeten slepen (d&d), en er vervolgens nog wat vraagjes over krijgen. Momenteel alleen als &lt;SELECT&gt;, en daar kan ik ook makkelijk kijken of iemand een antwoord invult, want als eerste optie kies ik &lt;SELECT value="dummy" selected&gt; en dan werkt een lusje met document.forms[0].elements[i].value=='dummy' prima. Alleen zit ik met het probleem dat bijv (jawel, bijles :wink: ) je achterstrengen zowel info over tastzin als vibratiezin doorgeven, en daar heb ik nu een vrij omslachtige oplossing voor. Momenteel maak ik twee SELECT's, die ik in PHP vrij omslachtig moet checken (de eerste mag OF tast OF vibratie zijn, de tweede ook, en afhankelijk daarvan moet ik mijn feedback opbouwen). Toen wilde ik de selects vervangen door een multiple select, of evt checkboxes/radiobuttons, en dook dit probleem op. <P>Iets anders, wat me ook zou kunnen helpen, is als je me een methode kunt vertellen dat je door op een optie uit een select-list te klikken, deze kunt toevoegen aan een lijstje, en dat je vervolgens het lijstje met gekozen opties selecteert. Klinkt misschien wat vaag, maar hopelijk kom je er verder mee. Ik wil de pagina zo opzetten dat ook digibeten ermee uit de voeten kunnen, dus bv Ctrl inhouden voor een multiple-select gaat me al te ver. <P>Capice?
  • Heb je een voorbeeld online staan? Dat zegt waarschijnlijk iets meer dan je mooie verhaaltje waar ik eigenlijk nog weinig van snap.<P>------------------ Bill Gates: Scharrel een ouwe doos op, en zet er Linux op :) Chiquita71: tja...hahahah om nu linux op mezelf te zetten vind ik wat ver gaan.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.