2014-07-21 5 views
0

값이 화면에 표시되기 전에 입력 변경 이벤트를 가로 채길 원합니다. 이것은 0을 추가 할 때 유용합니다. 그러나 이것은 작동하지 않습니다.렌더링 전에 html5 숫자 입력을 차단 하시겠습니까?

<html> 
<body> 
<input id="tc" type="number" value="100"></input> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script> 
$("#tc").on('change', function() { 
    $("#tc").val("12"); 
}) 
</script> 
</html> 

requestAnimationFrame에서 수신 대기 중이며 값을 변경하지 않습니다. 무엇을합니까?

Fwiw 이것은 Safari (Chrome 및 Firefox는 제외)에서 작동합니다.

답변

2

keydown에서 구독하십시오.

$("#tc").on('keydown', function(event) { 
    event.preventDefault(); 
    $("#tc").val("12"); 
}); 

또는 모든 입력 소스가 input 청약에서 당신이 원하는 경우 :

$("#tc").on('input', function(event) { 
    $("#tc").val("12"); 
}) 
0

먼저 당신이 $("#tc").val("12");으로 값을 설정하고이 값을 변경할 때 .on('change')를 사용해야합니다.

$("#tc").val("0.00"); 
$("#tc").on('change', function() { 
    var n = $(this).val() 
    $("#tc").val(n + ".00"); 
}); 

을 heres jsFiddle

관련 문제