셀렉트 박스 wr_1값 관련 질문

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
셀렉트 박스 wr_1값 관련 질문

QA

셀렉트 박스 wr_1값 관련 질문

본문

<div class="main">
<select name="wr_1" id="wr_1" class="form-select" required onchange="test();">    
    <option value="사과"<?php echo ($write['wr_1'] == "사과") ? " selected" : "";?>>사과</option>
    <option value="딸기"<?php echo ($write['wr_1'] == "딸기") ? " selected" : "";?>>딸기</option>
    <option value="self">셀프입력</option>
</select>
</div>

<div name="self" id="self" style="display:none">
<input type="text" name="wr_1" id="wr_1" value="<?php echo $wr_1?>"> 
</div>

해당 코드로 셀렉트박스에서 셀프입력 선택시 디스플레이 온오프로 input창을 호출하여 wr_1값을 직접 받을 수 있도록 해두었습니다.

여기 까지는 잘 작동하는데 문제는 

사과, 딸기를 고르게 될경우
<input type="text" name="wr_1" id="wr_1" value="<?php echo $wr_1?>">  가 호출되지 않았음에도 같이 적용이 되어 사과나 딸기를 선택 했음에도
input이 함께 적용되어
당 input에는 당연히 입력한 값이 없으므로 공백으로 값을 넘겨줍니다...

해결 할 수있는 방법 있을까요

이 질문에 댓글 쓰기 :

답변 3

글쓰기 쪽에 하시는거면 위에랑 같이 value="<?php echo $wr_1?>" 가 아니라 value="<?php echo $write['wr_1']?>" 로 변경해보세요.

그리고 그냥 서로 안보이게 하는거면 넘어가서 이름이 두개라서 제대로 작동이 안 될 수 있습니다. 직접 입력은 다른 값으로 하시고 등록 할때 스크립트나 php 파일에서 따로 처리를 해주시는게 좋습니다.

<select name="wr_1" id="wr_1" class="form-select" required onchange="test(this.value);">

<input type="text" name="wr_1" id="wr_1_self" value="<?php echo $wr_1?>" disabled>

 

function test(v) {

   ~~~~~ 다른 코드 ~~~~~

   const fl = v === "self" ? false : true;
   $("#wr_1_self").attr("disabled", fl);

 

위에 빨간색 부분 추가 혹은 변경해 주시고 test() 함수에도 위 내용 추가해 보세요.

<div class="main">
    <select name="wr_select" id="wr_select" class="form-select" required>
        <option value="사과" <?php echo ($wr_1 == "사과") ? " selected" : "";?>>사과</option>
        <option value="딸기" <?php echo ($wr_1 == "딸기") ? " selected" : "";?>>딸기</option>
        <option value="self">셀프입력</option>
    </select>
</div>
<div name="self" id="self" style="display:none">
    <input type="text" name="wr_1" id="wr_1" value="<?php echo $wr_1?>">
</div>
<script type="text/javascript">
$(document).ready(function() {
    var isMatched = false;
    
    $("#wr_select option:not(:last)").each(function() {
        if ($(this).val() === $("#wr_1").val()) {
            isMatched = true;
            return false;
        }
    });
    
    if (!isMatched) {
        $("#wr_select").val("self").trigger('change');
    }
    $("#wr_select").on('change', function() {
        if ($(this).val() === "self") {
            $("#self").show();
        } else {
            $("#self").hide();
            $("#wr_1").val($(this).val());
        }
    });
});
</script>
답변을 작성하시기 전에 로그인 해주세요.
전체 1
QA 내용 검색

회원로그인

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