2017-01-06 3 views
0

Я создаю динамические формы внутри каждой игровой арматуры, чтобы они могли приглашать игроков. При создании листа команды я беру имя и создаю список.JQuery двойные динамические флажки не работают

/* Get team players information */ 
        if (data.team_members){ 
         $.each(data.members,function(index,item){ 
          if (data.r_id <= 2){ 
           members += '<tr class="refresh"><td style="padding: 0.20em;">'+ 
           '<a href="#">'+item.forename+' '+item.surname+'</a>'+ 
           '</td><td style="padding: 0.20em;">'+item.role; 
          }else{ 
           members += '<tr class="refresh">'+ 
            '<td style="padding: 0.20em;">'+item.forename+' '+item.surname+'</td>'+ 
            '<td style="padding: 0.20em;">'+item.role; 
          } 
          if (item.r_id == 3){ 
           invite += '<li>'+item.forename+' '+item.surname+ 
            '<input type="checkbox" id="check'+i+'" name="invites[]" value="'+item.p_id+'" checked/>'+ 
            '<label style="float:right;" for="check'+i+'">&nbsp;</label></li>'; 
          i++; 
          } 
          members += '</td></tr>'; 

         }); 
         $("#team_list > tbody:last-child").append(members); 
        } 

Беда в том, флажками, я создаю вар пригласить и все имена игроков идут в переменную. Позже в коде я добавляю динамической форме

f +='</center></td></tr><tr><td class="invite_form-'+i+'" style="display:none;">'+ 
            '<form id="iForm'+i+'" name="addIForm'+i+'"><ul class="alt">'+invite+'</ul>'+ 
            '<a href="#" id="submitInvite'+i+'" class="button submitInvite fit small">Submit</a>'+ 
            '</form></td></tr>'; 
           i++; 
          } 

загрузки страницы, и я могу открыть формы. Первая форма работает, и я могу щелкнуть флажки. Когда я открываю вторую форму, флажки выбирают для первой формы.

Я принимаю его из-за идентификатора флажка. Кто-нибудь сталкивался с этим вопросом раньше.

+1

Почему вы объявляете и увеличиваете переменную внутри цикла forEach, когда вы можете просто использовать параметр индекса так же, как использовать элемент внутри обратного вызова? Попробуйте id = "check" + index + '"' вместо того, что вы используете сейчас. Или вы можете использовать item.p_id для объединения идентификатора ввода. –

+1

Вероятно, это связано с тем, что атрибут имен флажков одинаковый. Попробуйте создать уникальные имена для каждого набора флажков ... – DouglasCamargo

ответ

0

Изменено его в массив Json

if (item.r_id == 3){ 
           tmp ={ 'fore': item.forename, 
             'sur': item.surname, 
             'p_id': item.p_id 
            } 
           jsonObj.push(tmp); 
          } 

А потом я петельные в JSON и увеличивается идентификатор для каждого флажка создал, так что не имеет значения, сколько я создал

f +='</center></td></tr><tr><td class="invite_form-'+i+'" style="display:none;">'+ 
            '<form id="iForm-'+i+'" name="addIForm-'+i+'"><ul class="alt">'; 
           $.each(jsonObj, function(index, item) { 
            f += '<li>'+item.fore+'<input type="checkbox" id="check-'+m+'" name="invites[]" value="" checked/>'+ 
            '<label style="float:right;" for="check-'+m+'">&nbsp;</label></li>'; 
            m++; 
           }); 
           f += '</ul>'+ 
            '<a href="#" id="submitInvite-'+i+'" class="button submitInvite fit small">Submit</a>'+ 
            '</form></td></tr>'; 
           i++; 
          } 

Thats как я обернулся на этот раз

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