인풋 관련해서 다시 질문 드립니다.

인풋 관련해서 다시 질문 드립니다.

QA

인풋 관련해서 다시 질문 드립니다.

본문

<div class="input_wrap">
        <div class="input_list">
            <input type="text" name="wr_31" placeholder="입력해주세요." />
        </div>
    </div>
    <button class="add_field">추가하기</button>

<script>
const wrapper = $('.input_wrap'); // 입력 필드를 포함하는 컨테이너 선택
const addButton = $('.add_field'); // 추가 버튼 선택
const maxFields = 10; // 최대 입력 필드 수 설정
let fieldCount = 1; // 현재 입력 필드 수

// '추가하기' 버튼 클릭 시 이벤트
addButton.click(function(e) {
    e.preventDefault(); // 페이지 리로드 방지
    if (fieldCount < maxFields) { // 최대 필드 수 체크
        fieldCount++; // 필드 수 증가
        // 새 입력 필드 추가
        wrapper.append(`
            <div class="input_list">
                <input type="text" name="wr_32" placeholder="입력해주세요." />
                <a href="javascript:void(0);" class="remove_field">삭제</a>
            </div>
        `);
    }
});

// '삭제' 링크 클릭 시 이벤트
wrapper.on('click', '.remove_field', function(e) {
    e.preventDefault(); // 페이지 리로드 방지
    $(this).parent('.input_list').remove(); // 필드 제거
    fieldCount--; // 필드 수 감소
});

</script>

 

위 코드는 필드 추가 되는 소스 인데, 추가 버튼을 누르면 필드 계속 추가가 되는데, 처음 wr_31은 정상 저장이 되고, 추가 했을 때 나오는 인풋이 wr_32 입니다. 이렇게 해서 2개만 하면 저장이 정상 되는데 , 

여기서 추가 버튼 누를때 마다 wr_31 이후 wr_32~wr_39 까지 생기가 하려면 어떤방식으로 수정을 해아 할까요. 아주 잘 알고 계신 고수님들 있을까요?~~

이 질문에 댓글 쓰기 :

답변 1

다음 코드가 도움이 될지 모르겠습니다.

 


<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<div class="input_wrap">
        <div class="input_list">
            <input type="text" name="wr_31" placeholder="입력해주세요." />
        </div>
    </div>
    <button class="add_field">추가하기</button>
<script>
const wrapper = $('.input_wrap'); // 입력 필드를 포함하는 컨테이너 선택
const addButton = $('.add_field'); // 추가 버튼 선택
const maxFields = 10; // 최대 입력 필드 수 설정
let fieldCount = 1; // 현재 입력 필드 수
// '추가하기' 버튼 클릭 시 이벤트
addButton.click(function(e) {
    e.preventDefault(); // 페이지 리로드 방지
    if (fieldCount < maxFields) { // 최대 필드 수 체크
        var el_num = 0;
        var el_prefix = 'wr_';
        var el = $('input[name^="' + el_prefix + '"]:last');
        if (el != null) {
            el_num = Number(el.get(0).name.replace(el_prefix, ''));
        }
        el_num++;
        fieldCount++; // 필드 수 증가
        // 새 입력 필드 추가
        wrapper.append(`
            <div class="input_list">
                <input type="text" name="wr_${el_num}" placeholder="입력해주세요." />
                <a href="javascript:void(0);" class="remove_field">삭제</a>
            </div>
        `);
    }
});
// '삭제' 링크 클릭 시 이벤트
wrapper.on('click', '.remove_field', function(e) {
    e.preventDefault(); // 페이지 리로드 방지
    $(this).parent('.input_list').remove(); // 필드 제거
    fieldCount--; // 필드 수 감소
});
</script>

문제가 있다고 판단되는 경우
다음 소스로 임의의 페이지 구성을 하고 테스트 해볼수 있습니다.


<?php
if (empty($_POST) == false) {
    print_r($_POST);
}
?>

<script src="http://code.jquery.com/jquery-latest.min.js"></script>

<form method="post">
    <input type="submit">

<div class="input_wrap">
        <div class="input_list">
            <input type="text" name="wr_31" placeholder="입력해주세요." />
        </div>
    </div>
    <button class="add_field">추가하기</button>

</form>

<script>
const wrapper = $('.input_wrap'); // 입력 필드를 포함하는 컨테이너 선택
const addButton = $('.add_field'); // 추가 버튼 선택
const maxFields = 10; // 최대 입력 필드 수 설정
let fieldCount = 1; // 현재 입력 필드 수

// '추가하기' 버튼 클릭 시 이벤트
addButton.click(function(e) {
    e.preventDefault(); // 페이지 리로드 방지
    if (fieldCount < maxFields) { // 최대 필드 수 체크

        var el_num = 0;
        var el_prefix = 'wr_';
        var el = $('input[name^="' + el_prefix + '"]:last');
        if (el != null) {
            el_num = Number(el.get(0).name.replace(el_prefix, ''));
        }
        el_num++;

        fieldCount++; // 필드 수 증가
        // 새 입력 필드 추가
        wrapper.append(`
            <div class="input_list">
                <input type="text" name="wr_${el_num}" placeholder="입력해주세요." />
                <a href="javascript:void(0);" class="remove_field">삭제</a>
            </div>
        `);
    }
});

// '삭제' 링크 클릭 시 이벤트
wrapper.on('click', '.remove_field', function(e) {
    e.preventDefault(); // 페이지 리로드 방지
    $(this).parent('.input_list').remove(); // 필드 제거
    fieldCount--; // 필드 수 감소
});

</script>


<?php
if (empty($_POST) == false) {
    print_r($_POST);
}
?>

<script src="http://code.jquery.com/jquery-latest.min.js"></script>

<form method="post">
    <input type="submit">

<div class="input_wrap">
        <div class="input_list">
            <input type="text" name="wr_31" placeholder="입력해주세요." />
        </div>
    </div>
    <button class="add_field">추가하기</button>

</form>

<script>
const wrapper = $('.input_wrap'); // 입력 필드를 포함하는 컨테이너 선택
const addButton = $('.add_field'); // 추가 버튼 선택
const maxFields = 10; // 최대 입력 필드 수 설정
let fieldCount = 1; // 현재 입력 필드 수

const delButton = '<a href="javascript:void(0);" class="remove_field">삭제</a>';

// '추가하기' 버튼 클릭 시 이벤트
addButton.click(function(e) {
    e.preventDefault(); // 페이지 리로드 방지
    if (fieldCount < maxFields) { // 최대 필드 수 체크

        var el_num = 0;
        var el_prefix = 'wr_';
        var el = $('input[name^="' + el_prefix + '"]:last');
        if (el != null) {
            el_num = Number(el.get(0).name.replace(el_prefix, ''));
        }
        el_num++;

        fieldCount++; // 필드 수 증가
        // 새 입력 필드 추가
        wrapper.append(`
            <div class="input_list">
                <input type="text" name="wr_${el_num}" placeholder="입력해주세요." />
                ${delButton}
            </div>
        `);

        $('.remove_field').not(':last').remove();
    }
});

// '삭제' 링크 클릭 시 이벤트
wrapper.on('click', '.remove_field', function(e) {
    e.preventDefault(); // 페이지 리로드 방지
    $(this).parent('.input_list').remove(); // 필드 제거
    fieldCount--; // 필드 수 감소

    if ($('.input_list').length > 1) {
        $('.input_list:last').append(delButton);
    }
});

</script>

답변을 작성하시기 전에 로그인 해주세요.
전체 2,429
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT