2016-10-12 7 views
2

내 webapp의 HTML5 숫자 입력 단계를 변경하고 싶습니다.HTML5 입력 번호 단계 기능을 재정의하는 방법은 무엇입니까? jQuery 사용

$("#mynumberinput").keydown(function(e){ 
    if (e.keyCode == 38) // Arrow-Up 
    { 
     $(this).val(parseInt($(this).val() + 100)); 
    } 
    if (e.keyCode == 40) // Arrow-Down 
    { 
     $(this).val(parseInt($(this).val() - 100)); 
    } 
}); 

그러나 작동하지 않았다 : 나는 100 내가 이것을 시도 대신에 1

1. 100에 의해합니다. 이것을 어떻게 할 수 있습니까?

+0

방법에 대한'<입력 유형 = "숫자"단계 = "100"ID = "mynumberinput"/>' – Hackerman

+0

"* 그러나 [가] 작동하지 않았다 *"어떤 방식으로 작동하지 않았다? 어떻게 잘못 됐어? 오류 메시지가 있었습니까? 관련 HTML은 무엇입니까? –

답변

3

변경 요소 자체에 step 특성 :

<input type="number" step="100" />

또는 직접 HTML을 수정할 수없는 경우, 당신은 jQuery의 attr 방법으로이 작업을 수행 할 수 있습니다

$("#mynumberinput").attr('step', 100); 

실제 문제는 사용자가 숫자를 입력 할 수있게하려는 것입니다. 다음에을 100 단위로 늘리거나 줄입니다. 현재 코드의 문제는 값을 숫자로 변환하지 않아서 ' 문자열 연결으로 다시 접하게됩니다. 이 문제를 해결하려면 증가 또는 값이 감소하기 전에 숫자 값으로 변환 : 나는 99 대신 100이로 사용하고

$('input').on('keyup', function(e) { 
 
    if (e.which === 38) 
 
    this.value = +this.value + 99; 
 
    else if (e.which === 40) 
 
    this.value = +this.value - 99; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" />

주 그것의 브라우저의 초기 취급 할 수 있습니다 또한 step 값이 1이 아닌 경우이 오프셋을 직접 조정해야합니다.

+0

안돼! 'step = "100"'고마워! 나는 정답으로 표시 할 것이다! – candlejack

+0

나는 (그리고 질문이 어렴풋하게 막연하다) 추측하고 있지만 OP *는 입력 된 값을 100 단위로 조정하려고 할 수 있습니다. 예를 들어, '120'을 입력하고 위쪽 화살표 회 전자를 클릭하면 값이 변경됩니다 '220'보다는 '200'으로 나타납니다. 그러나 명백하게 (위에 그의 코멘트를 줘라). :) –

+0

@DavidThomas 좋은 의견,하지만 어떻게 해결할 수 있습니까? – candlejack

1

입력 단계 답이 맞다고 생각하지만 JQuery와 관련하여 저는 val에서 parseInt를 가져야한다고 생각합니다. 그리고 나서이 값을 뺍니다.

$(this).val(parseInt($(this).val()) - 100); 
+0

정보 주셔서 감사합니다! +1 – candlejack