for Each문으로 가져온 리스트에 input 타입 checkbox와 radio 버튼을 둘다 사용하여 각각 데이터를 가지고 오고 싶습니다

조회수 1634회

제가 워낙 초보자이다 보니 자세하세 설명을 할수가 없습니다 죄송합니다 ㅠㅠ

다름이 아니라 회원정보와 스터디 테이블이 있는데 회원정보리스트를 가져와서 스터디에 회원을 checkbox으로 선택하고 스터디의 리더를 radio로 선택해서 한번에 넣고 싶은데 value값을 둘다 같은 회원 이름으로 가져와서 그러는지는 모르겠지만 제대로 데이터가 입력이 되지 않습니다

구체적인 설명이 어려운점 양해 부탁드립니다 스터디 등록 할때는 회원정보를 팝업창으로 가져오려고 하고 있습니다 혹시 고수분들께서 지혜를 나눠 주시면 감사하겠습니다

<c:forEach items="${list}" var="list">
    <tr>
        <td width="10%"><input type="checkbox" name="selectedStudent" id="selectedStudent" value="${list.studentNo},${list.studentName}"></td>
        <td width="15%">${list.studentNo}</td>
        <td width="15%">${list.grade}</td>
        <td width="24%">${list.studentName}</td>
        <td width="24%">${list.studyName}</td>
        <td width="12%"><input type="radio" name="selectedleader" id="selectedleader" value="${list.studentNo},${list.studentName}"></td>
    </tr>       
</c:forEach>
  • 현재 내용만으로는 질문이 뭔지 파악이 어렵네요. 혹시 자바스크립트가 더 있고 그게 제대로 작동하지 않는다는 말인가요? "제대로 데이터가 입력이 안된다"라는 부분을 더 설명해보세요. 위의 HTML은 아무 문제가 없습니다. 편집요청빌런 2020.3.27 16:09
  • id가 중복된다는 것만 빼고 말이죠. 편집요청빌런 2020.3.27 16:10

3 답변

  • 스크립트에서 selectedstudentselectedleader로 바꾸면 되겠네요.

    • 죄송합니다 제가 한참 모자라서 정확히 이해를 못하고 있습니다 알 수 없는 사용자 2020.3.27 17:11
  • 친구의 도움으로 밑에 추가로 올린 스크립트를 넣으면 선택한 학생의 정보를 불러오는게 가능했습니다. 리더정보를 불러오게 하려면 어떤식의 스크립트를 입력해 줘야 하나요?

    function cntCheck() {

    var select = eval("document.selectform");
    var cntCheck = 0;
    
    if (confirm("이걸로 정하시겠습니까??") == true) {
    
        document.getElementById("selectform").action="FieldWriteController.do"
        document.getElementById("selectform").submit()
    } else {
        return;
    }
    
    for(i=0; i<select.selectedstudent.length; i++) {
        if(select.selectedstudent[i].checked == true) {
            cntCheck++;
        }
    }
    setCheck();
    

    }

    function setCheck() {

        var select = eval("document.selectform");
    var checked = document.getElementsByName("selectedstudent");
    var chkList = "";
    var afterStr = "";
    var no = "";
    var name = "";
    
    for(var i=0; i < select.selectedstudent.length; i++) {
        if(checked[i].checked == true) {
            chkList += checked[i].value + ",";
        }
    }   
    
    var afterStr = chkList.split(',');
    
    for(var i =0; i < afterStr.length-1; i++) {
        if(i % 2 == 0) {
            no += afterStr[i]+","; 
        } else {
            name += afterStr[i]+","; 
        }
    }
    
    
    opener.document.field.studentNo.value=no;
    opener.document.field.studentName.value=name;
    self.close();
    

    }

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 답변감사합니다 leader로 변경을 하니 리더정보가 들어가게 되었습니다 그런데 제가 두개의 정보를 같이 가져오려 하는데 같은 스크립트를 명칭만 변경해서 사용하면은 되는 건가요?? 방금 해보았는데 둘다 출력이 되지 않아서요

    <th scope="col">리더명</th>
        <td>
        <div class="textbox" style="white-space:nowrap;">
        &nbsp;<textarea id="studentName" name="studentName" cols="40%" rows="5%"readonly="readonly"></textarea>
                </div>
                </td>
    </tr>
    <tr>
        <th scope="col">학생명</th>
        <td>
        <div class="textbox" style="white-space:nowrap;">
        &nbsp;<textarea id="studentName" name="studentName" cols="40%" rows="5%" readonly="readonly"></textarea>
        </div>
        </td>
    </tr>
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)