테스트 사이트 - 개발 중인 베타 버전입니다

소스 어디가 잘못되었는지 봐주세요 채택완료

smltree 11개월 전 조회 2,631

체크박스에서 기타를 선택했을때 텍스트박스를 필수입력 하려고 합니다.
(체크박스이기 때문에 중복선택을 해도 기타를 선택하면 작동해야 합니다.)

아래와 같이 했는데 작동을 안하네요

어디가 문제가 되는지 알려주세요

감사합니다.

 

        <input type="checkbox" name="choice[]" id="people1" value="선택1"></p>

<p>        <input type="checkbox" name="choice[]" id="people2" value="선택2">

        <input type="checkbox" name="choice[]" id="people3" value="기타">

        <input type="text" name="choice_etc" id="choice_etc"></p>

<p> </p>

<p><script></p>

<p>       if ($("#people3").is(':checked')) {

            if ($("#choice_etc").val().trim() === '') {

                alert("기타 내용을 적어주세요.");

                $("#choice_etc").focus();

                return false;

            }

          }</p>

<p></script></p>

<p>

 

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
11개월 전

</p>

<p>$('form').on('submit', function(e) {

    // 체크박스 선택 여부 확인

    if ($("input[name='choice[]']:checked").length === 0) {

        alert("최소 한 개 이상의 항목을 선택해주세요.");

        return false;

    }</p>

<p>    // '기타' 선택 시 텍스트박스 필수 입력 확인

    if ($("input[name='choice[]']:checked").filter("[value='기타']").length > 0) {

        if ($("#choice_etc").val().trim() === '') {

            alert("기타 내용을 적어주세요.");

            $("#choice_etc").focus();

            return false;

        }

    }

});</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

꽁치입니다
11개월 전
</pre>

<pre highlighter="hljs">
<code><script src="<a href="https://code.jquery.com/jquery-3.6.0.min.js"></script>" target="_blank" rel="noopener noreferrer">https://code.jquery.com/jquery-3.6.0.min.js"></script></a>
    <script>
        $(document).ready(function() { 
           
             // 제출 버튼 클릭 이벤트 핸들러
            $("#submitBtn").click(function(e) { 

                 // '기타' 체크박스가 선택되었는지 확인
                var isOtherChecked = $("#people3").is(':checked'); 

                 // '기타' 입력란의 값 가져오기 및 공백 제거
                var otherInputValue = $("#choice_etc").val().trim(); 

                  // '기타'가 선택되었고 입력란이 비어있는 경우
                if (isOtherChecked && otherInputValue === '') {
                    alert("기타 내용을 적어주세요.");
                    $("#choice_etc").focus(); // 입력란에 포커스 이동
                    e.preventDefault(); // 폼 제출 방지
                    return false;
                }

                // 폼이 실제로 존재하는 경우 제출 로직 추가 가능
                // 예: $("form").submit();
            });
        });
    </script></code></pre>

<p><code><label><input type="checkbox" name="choice[]" id="people1" value="선택1"> 선택1</label>


<label><input type="checkbox" name="choice[]" id="people2" value="선택2"> 선택2</label>


<label><input type="checkbox" name="choice[]" id="people3" value="기타"> 기타</label>


<input type="text" name="choice_etc" id="choice_etc" placeholder="기타 내용을 입력하세요">


<button type="submit" id="submitBtn">제출</button>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

R
11개월 전

</p>

<p><script></p>

<p>    $("input[name='choice[]']:checked").each(function() {</p>

<p>        if ($(this).val() === "기타") {</p>

<p>            if ($("#choice_etc").val().trim() === '') {</p>

<p>            alert("기타 내용을 적어주세요.");</p>

<p>            $("#choice_etc").focus();</p>

<p>            return false;</p>

<p>            }</p>

<p>        }</p>

<p>    });</p>

<p></script></p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

플라이
11개월 전

해당 
if ($("#people3").is(':checked')) {
이 이벤트를 실행시 function이나 jquery로 무엇인가 해당 이벤트를 발생시켜야 하는데
현재는 이것을 실행시킬 function이나 실행시킬 연결고리가 없어서 해당 부분의 스크립트를 적용할수가 없습니다.

 

예를 들어

function chk_event(){

}

이런 이벤트 function 함수를 호출해서 처리하도록 이벤트를 걸어주셔야 해당 함수가 반응하던지 할겁니다.

소스를 다 적용해 드리면 좋겠지만 직접 공부도 하시고 왜 이렇게 되는지를 아셔야 할듯 해서

 

이렇게 남겨 놓습니다.  참고해 주세요


 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

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

로그인