아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
하얀고슴도치236
하얀고슴도치23621.05.10

JS 에서 textarea 값 변경 체크하는 법이 궁금합니다.

JS 에서 textarea 값 변경 체크하는 법이 궁금합니다.

JS에서 아래 코드와 같이 textarea 값이 바뀌는걸 검사하고 있습니다.

oldVal = ""; $("textarea").on("propertychange change keyup paste input", function() { var currentVal = $(this).val(); if(currentVal == oldVal) { return; } oldVal = currentVal; console.log("oldVal : " + oldVal ); console.log("currentVal : " + currentVal ); });

붙여넣기 하거나 직접 입력하는것 등은 paste , keyup, change 등 이벤트에서 잡히지만

$('textare').val() 같은 function 으로 넣거나, 개발자 도구 등에서 강제로 넣는 경우 체크가 되질 않습니다.

이를 체크하는 법이 궁금합니다.

55글자 더 채워주세요.
답변의 개수
3개의 답변이 있어요!
  • 탈퇴한 사용자
    탈퇴한 사용자21.05.10

    안녕하세요.

    브라우저에서 어떠한 이벤트 (행동)가 있을 때 호출되는 함수는 호출되지 않을 것으로 보입니다.

    사용자가 어떤 행동을 할지 모르는데 (개발자 도구를 열어서 수정 등) 거기에 이벤트로만 체크하기는 무리가 있습니다.

    $('textarea').val() 은 개발자가 직접 코딩한 경우에는 val() 호출 후 change 이벤트를 호출해도 될 듯 합니다.

    위처럼 호출하더라도 해당 로직이 저장 시 체크해야 될 사항이면 '저장' 이벤트에 해당 로직을 넣는게 가장 좋습니다.


  • 안녕하세요.

    질문자님이 말씀하신대로 개발자도구 등에서 .val()을 상요해 textarea 값을 변경하는 방법은 사용자가 비정상적인 방법으로 접근하는 것입니다.

    이런 경우엔 바뀐 값을 체크할 것이 아니라, 이런 접근을 애초에 막고, 정상적인 방법으로 textarea에 직접 입력하도록 해야합니다.

    아니면 onkeyup등의 이벤트가 일어나면 변경을 감지하는 게 아니라 submit 버튼을 만들어서 그 버튼이 클릭되면 그때 값을 감지하도록 하면 좋을 듯합니다.


  • 붙여넣기 하거나 직접 입력하는것 등은 paste , keyup, change 등 이벤트에서 잡히지만

    $('textare').val() 같은 function 으로 넣거나, 개발자 도구 등에서 강제로 넣는 경우 체크가 되질 않습니다.

    이를 체크하는 법이 궁금합니다.

    ===> 이런건 명령문보다는 기술적으로 해결해야 하는데요

    이벤트 이외의 행위를 감지하시려면, 자바스크립트 이기 때문에

    타이머기능을 사용하여 , 매초마다 체크하는수밖에 없을것 같습니다

    즉 위 명령을 이벤트 가동시 실행하는게 아니라

    타이머로 매초마다 실행하여 검사하시면 될듯합니다 ^^