input 입력시 배수이면 입력가능하고 아니면 alert창 띄워주는 제이쿼리가 잇을까요?

input 입력시 배수이면 입력가능하고 아니면 alert창 띄워주는 제이쿼리가 잇을까요?

QA

input 입력시 배수이면 입력가능하고 아니면 alert창 띄워주는 제이쿼리가 잇을까요?

본문

제목 그대로 input에 수량을 직접입력하는데 배수인지 아닌지 판별가능한 제이쿼리가 있을까요?

 

ex) 12배수로만 수량이 입력가능하게 12개 단위 (12개, 24개 ...)

답을 알고 계신 분 답변 부탁드리겠습니다. 감사합니다.

이 질문에 댓글 쓰기 :

답변 2

간단히 만들어봤는데용  이게 맞는지 모르겠네요

 


$(function () {
    let input_timer;
    $("input[name='inpu_text']").on("input", function () {
 
        let in_value = parseInt($(this).val());
        if (input_timer) {
            clearTimeout(input_timer);
        }
 
        // 키보드 입력 받는 텀 주기위해 타임아웃 설정 입력값 없을시 0.5초 이후 실행  
        input_timer = setTimeout(function () {
            if (in_value > 0) {
                if (in_value % 12 !== 0) {
                    alert("배수 단위로 입력해주세요. Ex) 12, 24, 36...");
                    return false;
                }
            }
        }, 500);
    });
});

오 잘됩니다. 그런데 타이머 기능이 있어서 조금만 느려도 alert창이 뜨는데 다른 방법은 없을까요?
그리고 만약 위의 방법대로 할 시 let input_timer = 0.1; 이런식으로 정의 해주면 되나요?

input에 입력 받는 시간이 사람마다 다르기 때문에..... 500 부분을 줄이거나 늘리거나 시간조절 하면 될듯하기도 하고요 아니면  .on("input"  이부분을  포커스 아웃 이라든지 input 영역 벋어났을때 체크 되게도 할수 있을듯 싶네요...
=====
.on("blur" 로 수정하면  setTimeout 이부분이 필요 없어보이네요~

 

제이쿼리 아니어서 죄송요.

이런 건 제이쿼리건 바닐라건 input 하나 가지고만 해결하기는 쉽지 않습니다.

onkeyup 등으로 판명을 해도 12를 입력하려면 최초의 1이 12의 배수가 아니라서

1을 입력하는 순간 바로 튕겨내기 때문에 상당히 로직이 어렵습니다.

 

그래서 일반버튼을 같이 연동하셔야 해요.

 


<input id=my name=my>
<button type=button onclick=yes12()>클릭</button>
<script>
function yes12() {
   if (my.value == 0 || my.value % 12 != 0) {
        alert("12의 배수만 가능");
        my.value = "";
    }
}
</script>
답변을 작성하시기 전에 로그인 해주세요.
전체 123,592 | RSS
QA 내용 검색

회원로그인

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