Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ana C.

Script de form

Recommended Posts

Olá a todos,

 

Estou iniciando com programação javascript e me deparei com um problema em um questionário.

A questão é, existe um quiz onde é possível clicar no botão de ver a resposta sem nem mesmo o aluno ter escolhido uma opção. O meu desafio é fazer com que o botão de resposta só esteja disponível quando o cara escolher ao menos uma opção de resposta, certa ou errada. É importante, já que se trata de cursos de educação à distância, e hoje o aluno pode ver todas as respostas antes se ele quiser...o que mata é que o script já está pronto, eu só teria que acrescentar essa funcionalidade. Já tentei várias opções e ainda estou bem perdida...alguma opção de quem já teve experiência com algo assim?

Vou deixar o script que estou mexendo para quer quiser dar um olhada.

 

var c11 = {
3
4 fId : "c11",
5 fCurSeq : null,
6 initSeq : function(pCodeSeq){
7 try {
8 if(pCodeSeq==null) return;
9 if(this.fCurSeq!=null) this.closeSeq();
10 this.fCurSeq = pCodeSeq;
11 switch(this.fCurSeq) {
12case "play" : {
13 var vForm = document.forms.c11_form;
14 for (var i=0; i < vForm.length; i++) {
15 vForm.elements[i].disabled = false;
16 vForm.elements[i].checked = false;
17 }
18
19var vLoadRespSession = "";
20var vResp = scServices.assmntMgr.getResponse(this.fId, vLoadRespSession, "choice");
21 if(vResp != null) document.getElementById("c11_"+vResp).checked = true;
22
23 this.setSolution(false);
24this.setMode(document.getElementById("c11_N_score"), "invisible");
25this.setMode(document.getElementById("c11_N_question"), "visible");
26this.setMode(document.getElementById("c11_N_choiceList"), "visible");
27this.setMode(document.getElementById("c11_N0_choice"), "visible");
28this.setMode(document.getElementById("c11_N1_choice"), "visible");
29this.setMode(document.getElementById("c11_N0_label"), "visible");
30this.setMode(document.getElementById("c11_N1_label"), "visible");
31this.setMode(document.getElementById("c11_N0_chExpln"), "collapsed");
32this.setMode(document.getElementById("c11_N1_chExpln"), "collapsed");
33this.setMode(document.getElementById("c11_N_gExpln"), "collapsed");
34this.setToggleStatus(document.getElementById("c11_S_N91"), false);
35this.setToggleStatus(document.getElementById("c11_S_Nb4"), false);
36var vRespSession = "";
37 if(scServices.assmntMgr.getCompletionStatus(this.fId, vRespSession)=="notAttempt") scServices.assmntMgr.setCompletionStatus(this.fId, vRespSession, "attempt");
38 this.setResp = function(pInput, pIdx) {
39 scServices.assmntMgr.setResponse(this.fId, vRespSession, "choice", pIdx);
40
41 this.computeScore();
42 scServices.assmntMgr.commit();
43 }
44
45 this.computeScore = function() {
46
47 this.fMinPts = 0;
48 this.fMaxPts = 1;
49 this.fScorePts = document.forms.c11_form.c11_radio[0].checked ? this.fMaxPts : this.fMinPts;
50
51 //alert("score:::::"+this.fMinPts+" - "+this.fScorePts+" - "+this.fMaxPts);
52var vScoreSession = "";
53 if(this.fScorePts != null) scServices.assmntMgr.setPts(this.fId, vScoreSession, this.fMinPts, this.fScorePts, this.fMaxPts);
54
55 this.refreshScoresFeedbacks();
56 }
57
58if(vRespSession != vLoadRespSession) {
59for(var i = 0; i < vForm.length; i++) if(vForm.elements[i].checked) break;
60 scServices.assmntMgr.setResponse(this.fId, vRespSession, "choice", (i < vForm.length) ? vForm.elements[i].value : null);
61}
62this.computeScore();
63
64 scServices.assmntMgr.commit();
65 break;
66 }
67
68 }
69 }catch(e){alert("failed:::"+e)};
70 },
71 onActionNe5 : function(pButton){
72 if(this.isDisabled(pButton)) return;
73var vSess="";
74scServices.assmntMgr.resetResponses(this.fId, vSess);
75scServices.assmntMgr.setPts(this.fId, vSess, null, null, null);
76this.initSeq("play");
77
78 scServices.assmntMgr.commit();
79 },
80 onActionN91 : function(pButton){
81 if(this.isDisabled(pButton)) return;
82 var vIsOn = this.isToggleOn(pButton);
83 if(vIsOn) {
84this.setMode(document.getElementById("c11_N_score"), "invisible");
85
86 } else {
87this.setMode(document.getElementById("c11_N_score"), "visible");
88
89 }
90 this.setToggleStatus(pButton, ! vIsOn);
91 scServices.assmntMgr.commit();
92 },
93 onActionNb4 : function(pButton){
94 if(this.isDisabled(pButton)) return;
95 var vIsOn = this.isToggleOn(pButton);
96 if(vIsOn) {
97this.setSolution(false); this.setMode(document.getElementById("c11_N_gExpln"), "collapsed");
98c11.setMode(document.getElementById("c11_N0_chExpln"), "collapsed"); c11.setMode(document.getElementById("c11_N1_chExpln"), "collapsed");
99 } else {
100this.setSolution(true); this.setMode(document.getElementById("c11_N_gExpln"), "visible");
101c11.setMode(document.getElementById("c11_N0_chExpln"), "visible"); c11.setMode(document.getElementById("c11_N1_chExpln"), "visible");
102 }
103 this.setToggleStatus(pButton, ! vIsOn);
104 scServices.assmntMgr.commit();
105 },
106 fct_play : function(){
107this.initSeq("play");
108
109 },
110 fct_reset : function(){
111var vSess="";
112scServices.assmntMgr.resetResponses(this.fId, vSess);
113scServices.assmntMgr.setPts(this.fId, vSess, null, null, null);
114this.initSeq("play");
115
116 },
117 fct_displaySol : function(){
118this.setSolution(true); c11.setMode(document.getElementById("c11_N0_chExpln"), "visible"); c11.setMode(document.getElementById("c11_N1_chExpln"), "visible"); this.setMode(document.getElementById("c11_N_gExpln"), "visible");
119
120 },
121 fct_cleanSol : function(){
122this.setSolution(false); this.setMode(document.getElementById("c11_N_gExpln"), "collapsed");
123c11.setMode(document.getElementById("c11_N0_chExpln"), "collapsed"); c11.setMode(document.getElementById("c11_N1_chExpln"), "collapsed");
124 },
125 setMode : function(pElt, pMode){
126 if(!pElt) return;
127 switch(pMode) {
128 case "collapsed" :
129 pElt.style.display = "none";
130 break;
131 case "invisible" :
132 pElt.style.display = "";
133 pElt.style.visibility = "hidden";
134 break;
135 case "enabled" :
136 if(pElt.className.indexOf("buttonDisabled")>=0) pElt.className = pElt.className.replace("buttonDisabled", "");
137 pElt.setAttribute("href", "java script:void(0)");
138 case "disabled" :
139 if(pMode=="disabled") {
140 if(pElt.className.indexOf("buttonDisabled")<0) pElt.className = pElt.className+" buttonDisabled";
141 pElt.removeAttribute("href");
142 }
143 default :
144 pElt.style.display = "";
145 pElt.style.visibility = "";
146 }
147 },
148 isDisabled : function(pButton){
149 return pButton==null || pButton.className.indexOf("buttonDisabled")>=0;
150 },
151 setToggleStatus : function(pButton, pOn){
152 if(pButton==null) return;
153 if(pOn){
154 var vIdx = pButton.className.lastIndexOf("toggleButtonOff");
155 pButton.className = (vIdx>0 ? pButton.className.substring(0, vIdx) : pButton.className) + " toggleButtonOn";
156 } else {
157 var vIdx = pButton.className.lastIndexOf("toggleButtonOn");
158 pButton.className = (vIdx>0 ? pButton.className.substring(0, vIdx) : pButton.className) + " toggleButtonOff";
159 }
160 },
161 isToggleOn : function(pButton){
162 return pButton!=null && pButton.className.indexOf("toggleButtonOn")>=0;
163 },
164
165 closeSeq: function(){
166 vForm = document.forms.c11_form;
167 switch(this.fCurSeq) {
168
169 case "play" : {
170
171 break;
172 }
173
174 }
175 this.fCurSeq = null;
176 },
177 getOnLoadSeq:function() {
178
179 return "play";
180
181 return null;
182 },
183
184 refreshScoresFeedbacks : function(){
185
186
187 var vScoreNode = document.getElementById("c11_SN10f");
188
189 var vScore = (Math.round((this.fScorePts-this.fMinPts) / (this.fMaxPts-this.fMinPts) * 100) * 1)+ 0;
190if(vScore > 99 && true) {
191 vScoreNode.innerHTML = "<span>" + vScore + "% de acertos</span>";
192 vScoreNode.className = "answBest";
193 } else if(vScore > 49 && vScore <= 99 && true) {
194 vScoreNode.innerHTML = "<span>" + vScore + "% de acertos</span>";
195 vScoreNode.className = "answGood";
196 } else if(vScore <= 49 && true) {
197 vScoreNode.innerHTML = "<span>" + vScore + "% de acertos</span>";
198 vScoreNode.className = "answBad";
199 } else {
200 vScoreNode.innerHTML = "";
201 vScoreNode.className = "";
202 }
203
204 },
205 solIsShown : false,
206 setSolution : function(pShown){
207 var vTR = document.forms.c11_form.firstChild.firstChild.firstChild;
208 if(!pShown && this.solIsShown) {
209 while(vTR) {
210 if(vTR.nodeName=="TR") {
211 var vOffs = vTR.className.indexOf("assmntSol");
212 if(vOffs>=0) vTR.className = vTR.className.substring(0, vOffs) + vTR.className.substring(vOffs+14);
213 }
214 vTR = vTR.nextSibling;
215 }
216 } else if(pShown && ! this.solIsShown) {
217
218 var vIdx = 0;
219 while(vTR) {
220 if(vTR.nodeName=="TR") {
221 vIdx++;
222 vTR.className = ( vIdx == 1 ? "assmntSolRight " : "assmntSolWrong ") + vTR.className;
223 }
224 vTR = vTR.nextSibling;
225 }
226
227 }
228 this.solIsShown = pShown;
229 },
230 onLoad: function(){
231 this.initSeq(this.getOnLoadSeq());
232 var vNodeRoot = document.getElementById("c11_A");
233 vNodeRoot.style.display = "block";
234 },
235 onUnload: function(){
236 this.closeSeq();
237 },
238 loadSortKey: "A",
239 unloadSortKey: "A"
240};
241
242scOnLoads[scOnLoads.length] = c11;
243scOnUnloads[scOnUnloads.length] = c11;

Muito obrigada!!!Qualquer dica é super bem vinda =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tópico Movido

 

Origem: Java básico http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Destino: Javascript

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.