글 등록에서 폼 입력값 체크 방법

조회수 607회

사용자가 글 작성 도중 페이지를 벗어나려고 할 경우 beforeunload를 작동 시키고 싶은데

폼에 입력 값이 있는지 없는지 체크하는 방법을 잘 모르겠습니다.

$("#form").on("change",function(){
    if( 폼에 값이 있을 경우 ) {
        $(window).on("beforeunload", function (){
            return "페이지에서 벗어나면 작성중인 내용은 저장되지 않습니다.";            
        });
    } else {
        $(window).off("beforeunload");
    }
});

위의 폼에 값이 있을 경우 부분을 어떻게 체크 해야 할까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • change가 됐을 때 값을 dirty 체크를 하고 beforeunload시에 dirty값이 있으면 메시지를 알려주면 될것 같아요. change 할때마다 바인딩을 하면 동작이 안될수도 있고, form의 값 여부체크 보단 변경 이력을 보는게 나을것 같아서요.

    $(document).ready(function() {
        formChanged = false; 
        window.onbeforeunload = checkDirty;
    });
    
    function checkDirty() {
        if (formChanged) {
            return "페이지에서 벗어나면 작성중인 내용은 저장되지 않습니다."; 
        }
    }
    
    $("#form").change(function() {
        formChanged = true;
    });
    
    • input에 입력값이 있을때 페이지를 이동하려고 하면 메시지가 출력되고 input에 값이 없으면 메시지가 안뜨고 페이지가 이동 되는 방식을 구현 하고 싶어서 form 값 여부 체크를 쓰려고 한거라서 제가 의도와는 다른것 같네요... ㅠㅠ 알 수 없는 사용자 2019.1.21 13:53
    • 그러면 폼에 값이 있을 경우 -> $(e.target).val().length > 0 이렇게 해보세요. e는 function(e){ ... 처럼 인자에 넣으시면 되구요. 한인규 2019.1.21 14:05
    • 아.. 저런식으로 체크하면 되는군요 감사합니다! 알 수 없는 사용자 2019.1.21 16:09

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

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

(ಠ_ಠ)
(ಠ‿ಠ)