2017-11-06 17 views
0
$(".maxQtyclass").keyup(function() { 
    var maxQty = $(this).attr('data-qty'); 
    //lets say it is 8 
    if ($(this).val() > maxQty 
     && e.keyCode != 46 // delete 
     && e.keyCode != 8 // backspace 
    ) { 
     $(this).val(maxQty); 
     alert('Only ' + maxQty + ' unit(s) available!'); 
     return false; 
    } 
}); 

8을 누르면 (8이 8보다 크지 않으므로 메시지가 표시되지 않습니다.) 9를 누르면 9 개의 단위 만 사용할 수 있음을 알립니다. 지금까지는 그렇게 좋았지 만 12 번을 누르면 경보가 울리지 않습니다. 왜? 12는 8보다 큽니다. keyup처럼 보이는 첫 번째 숫자 만 읽습니다. 숫자 12를 읽으려면 키 입력을하는 방법?두 숫자 후에 Jquery 키가 트리거 됨

+0

변경 이벤트를 사용하여 전체 문자열을 가져 와서 확인하십시오. –

+0

값 비교에는 키 입력을 사용하지 마십시오. 항상 이전 값을 고려합니다. 대신 blur 또는 change 이벤트를 사용하십시오. –

+0

다음은 onchange를 사용하는 방법을 보여줍니다. https://stackoverflow.com/questions/11179406/jquery-get-value-of-select-onchange – kmoser

답변

0

당신은 실패 "12"> "8"그래서 문자열 비교를하고, 키 코드 이후

$(".maxQtyclass").keyup(function (e) { 
 
     var maxQty = $(this).attr('data-qty'); 
 
     //lets say it is 8\ 
 
     if (parseInt($(this).val()) > parseInt(maxQty) 
 
      && e.keyCode != 46 // delete 
 
      && e.keyCode != 8 // backspace 
 
      ) { 
 
       $(this).val(maxQty); 
 
       console.log('Only ' + maxQty + ' unit(s) available!'); 
 
       return false; 
 
      } 
 
     });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="maxQtyclass" data-qty="8"/>

+0

예. 그것이 내가 요청한 것입니다. 너희들 최고야! –

0

를 얻을 수있는 함수에서 이벤트 객체를 전달해야합니다. 다음과 같이 int로 변환하여 비교해보십시오.

$(".maxQtyclass").keyup(function() { 
     var maxQty = $(this).attr('data-qty'); 
     //lets say it is 8 
     if (parseInt($(this).val()) > parseInt(maxQty) 
      && e.keyCode != 46 // delete 
      && e.keyCode != 8 // backspace 
      ) { 
      $(this).val(maxQty); 
      alert('Only ' + maxQty + ' unit(s) available!'); 
      return false; 
     } 
    }); 
+0

작동. 나는 이전에 그것을 물어야했다. 연구에 3 시간을 절약 할 수 있습니다. –

0

입력 된 텍스트를 숫자로 구문 분석해야합니다. 귀하의 시나리오에서 문자열 데이터 형식에서 "12"> "8"을 비교하고 문자열에서 1과 1로 시작하는 12가 8보다 작기 때문에 조건은 false를 반환합니다. 다음과 같이 코드를 변경하십시오.

$(".maxQtyclass").keyup(function() { 
    var maxQty = parseInt($(this).attr('data-qty')); 
    //lets say it is 8 
    if (parseInt($(this).val()) > maxQty 
     && e.keyCode != 46 // delete 
     && e.keyCode != 8 // backspace 
    ) { 
     $(this).val(maxQty); 
     alert('Only ' + maxQty + ' unit(s) available!'); 
     return false; 
    } 
}); 

모든 숫자가 int인지 확인하십시오.