2016-07-01 23 views
-4

Ich habe ein Problem mit dem vorhandenen Code, der HTML und JS verwendet. Die Seite hat eine HTML-Tabelle, die einen Radiobutton und 4 weitere Felder hat. Die Tabelle wird dynamisch erstellt, wenn wir Werte über den Controller festlegen. Ich kann auch neue Zeilen in der Tabelle hinzufügen, die komplett über JS erledigt werden. Jetzt ist das Problem, ich habe 2 Zeilen vom Controller eingefügt und eine neue Zeile durch einen Klick hinzugefügt. Also habe ich jetzt 3 Radiobutton. Wenn ich einen Radio-Button unter der Controller-Zeile auswähle, wählt er nur einen aus, was in Ordnung ist. Wenn ich den dritten Button wähle, kann ich zwei ausgewählte Radio-Buttons sehen, was nicht korrekt ist. Auf jeden Fall sollte es nur einen auswählen. Wenn ich Quelltext anzeigen sehe ich nicht den Eintrag für das Javascript hinzugefügt neue Zeile, so dass ich hoffe, das Problem ist wegen der ID generiert? Bitte lassen Sie mich wissen, wie kann ich dieses Problem lösen?Optionsfeldauswahl funktioniert nicht wie erwartet

Java-Controller

List <MyQuestion> fetchedQuestions = AppImpl.getMyQuestions(id); 

      for (int index=0; index< fetchedQuestions.size() ; index++){ 
       MyQuestion questionsToAdd= fetchedQuestions.get(index); 
       questionList.add(questionsToAdd); 

      } 

      myqstntemplate.setMyQuestions(questionList); 
      templatebean.setQuestionTemplate(myqstntemplate); 

     } 

JScode

function addRow(){ 
    isDirty=true; 
    if(document.getElementById('value').value != 'value'){ 
     rowNumber = document.getElementById('questionsSize').value; 
     document.getElementById('value').value='value';//other option is novalue 
    } 

    var questionId=document.getElementById('questionsSize').value; 
    questionId=parseInt(questionId)+1; 
    document.getElementById('questionsSize').value = questionId; 
    var newRow = $('<tr/>').attr('id', 'row' + rowNumber); 
    //Add some HTML to the row 
    newRow.html('<td><input type="hidden" id="newQuestion'+rowNumber+'" value="'+questionId+'"/><input id="question" name="question" type="radio" style="width:20px;" value="" onclick="setSelectedQuestion(\''+rowNumber+'\',\'new\')"/></td><td class="newRow" align="center" style="vertical-align: middle;">'+questionId+'<input type="hidden" value="newQuestion"/></td> <td colspan="2"><input style="width: 397px;" id="myQstnTemplate.questions['+rowNumber+'].question" name="myQstnTemplate.questions['+rowNumber+'].question" type="text" value="" maxlength="256" onclick="enableDirty()" style="text-align:left;"/><div id="pencil" title="Edit helptext" class="pencil-img fltRight" style="border: 0pt;padding-right: 15px; " onclick="displayHelpText('+rowNumber+',\'new\');return false;"></div><input id="myQstnTemplate.questions['+rowNumber+'].questionId" name="myQstnTemplate.questions['+rowNumber+'].questionId" type="hidden" value="-1" /><input style="width: 350px;" id="myQstnTemplate.questions['+rowNumber+'].helptext" name="myQstnTemplate.questions['+rowNumber+'].helptext" type="hidden" value="" onclick="enableDirty()" style="text-align:left;"/></td><td><select style="width:100px;" id="myQstnTemplate.questions['+rowNumber+'].schemeId" name="myQstnTemplate.questions['+rowNumber+'].schemeId"><option value="-1">Select</option><c:forEach var="answer" items="${myqstionTemplateBean.answerTypes}"><option title="${answer.questions}" value="${answer.displaySchemeId}">${answer.answerTypeName}</option></c:forEach></select></td> <td><div><input type="hidden" id="question'+rowNumber+'" name="question'+rowNumber+'" value="'+rowNumber+'"/><select id="myQstnTemplate.questions['+rowNumber+'].ansId" name="myQstnTemplate.questions['+rowNumber+'].ansId" style="width:100%"><option value="-1">Select</option><c:forEach var="ansId" items="${myqstionTemplateBean.ansIds}"><option value="${ansId}" <c:if test="${ansId eq question.ansId}">selected</c:if>>${ansId}</option></c:forEach></select></div></td>'); 
    //Append the new row to the body of the #myTable table 
     $('#qstionTable tbody').append(newRow); 
         //Iterate row number 
    rowNumber++; 

} 
+3

Quote: "Fragen, die Debugging-Hilfe suchen (" ** warum funktioniert dieser Code nicht? ** ") muss das gewünschte Verhalten, ein * spezifisches Problem oder Fehler und den kürzesten erforderlichen Code * enthalten, um es zu reproduzieren ** die Frage selbst. ** Fragen ohne ** eine klare Problemaussage ** sind für andere Leser nicht nützlich. Siehe: [Wie man ein minimales, komplettes und überprüfbares Beispiel erstellt] (http://stackoverflow.com/help/mcve). " – Siguza

+0

wo ist dein Code? – ozil

+0

Sie sollten Ihren Code einfügen, aber ich nehme an, dass Sie den Namen des hinzugefügten Radiobuttons nicht richtig festgelegt haben. Optionsfelder werden nach ihren Namen gruppiert, sodass der dritte RB denselben Namen wie die ersten beiden haben muss. Der Grund dafür, dass Sie den RB im Quellcode nicht sehen können, ist, dass der Quellcode keine dynamisch erstellten Elemente enthält. Wenn Sie mit der rechten Maustaste auf den RB klicken und auf "Element prüfen" klicken, wird es in der Konsole angezeigt. –

Antwort

0

Wenn Sie die alle Radiobutton arbeiten wollen zusammen sollten Sie den gleichen Namen für jede in der Vorlage haben.
Überprüfen Sie das.
Bearbeiten:
Wenn mehrere Radio-Button ausgewählt werden können, ist es, weil ihre Namen differents sind. Der Name Ihres Radios darf nicht von der rowNumber abhängen. Legen Sie einen harten Namen und keinen Variablennamen fest.
Überprüfen Sie das.

+0

warum unten abstimmen das? – Gaetan

+0

es funktionierte, Problem war mit dem Namen, wenn es dynamisch erstellt wurde. Vielen Dank für Ihre Hilfe. –

Verwandte Themen