2016-07-01 1 views
-4

У меня возникла проблема с существующим кодом, который использует html и JS. На странице есть таблица html, в которой есть переключатель и еще 4 поля. Таблица создается динамически, когда мы устанавливаем значения через контроллер. Также я могу добавить новые строки в таблицу, которые выполняются полностью через JS. Теперь проблема в том, что я вставил 2 строки из контроллера и добавил новую строку нажатием кнопки. Итак, теперь у меня 3 переключателя. Если я выбираю один переключатель между вставленной в контроллер строкой, он выбирает только один, что хорошо, если я выбираю третий, я вижу два выбранных переключателя, что неверно. В любом случае он должен выбрать только один. когда я использую источник просмотра, я не вижу записи для добавления новой строки javascript, поэтому я надеюсь, что проблема связана с созданием идентификатора? пожалуйста, дайте мне знать, как я могу решить эту проблему?Выбор кнопки радио работает не так, как ожидалось

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

Вы должны указать свой код, но я предполагаю, что вы не указали правильное имя добавленного радиообмена. Радио кнопки сгруппированы по их именам, поэтому третий RB должен иметь то же имя, что и первые два. Причина, по которой вы не видите RB в исходном коде, заключается в том, что исходный код не включает динамически созданные элементы; если вы щелкните правой кнопкой мыши RB и нажмите «Inspect element», вы увидите его в консоли. –

ответ

0

Если вы хотите, чтобы все кнопки радио работают вместе, вы должны иметь то же имя для каждого в шаблоне.
Проверьте это.
Редактировать:
Если вы можете выбрать несколько переключателей, это потому, что их имя отличается. Имя вашей радиостанции не должно зависеть от номера строки. Установите жесткое имя, а не имя переменной.
Проверьте это.

+0

почему вниз голосовать? – Gaetan

+0

это сработало, проблема была с именем, когда оно создавалось динамически. Спасибо Stages за вашу помощь. –

Смежные вопросы