2016-07-01 8 views
-4

htmlとJSを使用している既存のコードに問題があります。ページには、ラジオボタンとその他の4つのフィールドがあるhtmlテーブルがあります。コントローラを介して値を設定すると、テーブルが動的に作成されます。また、私はJSを通じて完全に実行される新しい行をテーブルに追加することができます。今問題は、コントローラから2行挿入し、ボタンをクリックして新しい行を追加したことです。だから今私は3つのラジオボタンがあります。コントローラーが挿入された行の中から1つのラジオボタンを選択すると、1つだけが選択されます.3番目のラジオボタンを選択すると、2つの選択されたラジオボタンが正しく表示されません。いずれにしても、1つだけを選択する必要があります。私はビューのソースを取得するときに、私はjavascriptのエントリを参照していない新しい行を追加したので、私は問題がIdのために生成されて願っていますか?どうすればこの問題を解決できますか教えてください。ラジオボタンの選択が期待通りに機能しない

のJavaコントローラ

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

引用:「デバッグのヘルプを求める質問(「**なぜこのコードは動作しないのですか?**」)には、目的の動作、*特定の問題またはエラー、およびそれを再現するために必要な最短コードが含まれている必要があります。質問自体** **明確な問題文**がない質問は、他の読者には役に立たない。参照:[最小限で完全で検証可能な例の作成方法](http://stackoverflow.com/help/mcve )。 " – Siguza

+0

あなたのコードはどこですか? – ozil

+0

あなたのコードを含めるべきですが、追加したラジオボタンの名前を正しく設定していないと思います。ラジオボタンは名前でグループ化されているため、3番目のRBは最初の2つと同じ名前を持つ必要があります。 RBをソースコードで見ることができない理由は、ソースコードに動的に作成された要素が含まれていないことです。 RBを右クリックして "Inspect element"をクリックすると、コンソールにその要素が表示されます。 –

答えて

0

あなたが一緒に働くすべてのラジオボタンをしたい場合は、テンプレート内のそれぞれのために同じ名前を持つ必要があります。
を確認してください。
編集:
複数のラジオボタンを選択できる場合は、名前が異なるためです。あなたのラジオの名前はrowNumberに依存してはいけません。変数名ではなく、ハードな名前を設定します。
を確認してください。

+0

なぜこれを投票する? – Gaetan

+0

それは働いた、問題は動的に作成されたときに名前だった。あなたの助けに感謝のステージ。 –

関連する問題