2014-10-30 7 views
1

숫자 이외의 모든 키 스트로크 (숫자 위에있는 문자와 숫자 위에있는 문자)와 빼기 (-) 및 더하기 (+) 표지와 쉼표 (,).숫자, 더하기, 빼기, 쉼표, F5 등만 허용합니다.

현재 입력 한 문자의 2 배 유형 (예 : 2는 22)뿐 아니라 현재 값을 새 숫자로 대체하지만 더하기, 빼기 및 쉼표로는 ½, m , 그리고 k. 또한 F5, Ctrl + R, Shift + R, 삭제, 집 및 끝과 같이 웹 사이트에서 잘 사용되는 일반적인 키를 차단 해제하고 싶지만 F5, Shift + R을 어떻게 해제 할 수 있는지 모르겠습니다. Ctrl 키 + R.

$('body').on('keydown', 'input[name="textfield-correction-temperature"]', function(c) { 
    console.log(c.keyCode); 
    if(c.keyCode != 107 && c.keyCode != 109 && c.keyCode != 188 && c.keyCode > 31 && (c.keyCode < 48 || c.keyCode > 57)) { 
     return false; 
    } else { 
     var key = String.fromCharCode(c.which); 
     $(this).val(key); 
    } 
}); 

jsFiddle demo

+1

첫 번째 문제는 원하지 않는 입력 (OK)에 대해 false를 반환하지만 취소하지 않고 입력이 유효하면 수동으로 입력하는 것입니다. 즉, 문자를 추가하면 문자가 추가되어 중복이 생깁니다. 항상 거짓을 반환해야합니다. –

+0

중복 된 값에 대한 문제가 수정되었습니다 :) 감사합니다! – Erik

답변

0

좀 간단하게 코드에 도움이 될 수도 정규 표현식을 사용하여이 같은 과정을 수행. 당신은 물론, 취향에 맞게 정규식을 수정할 수

$(document).ready(function() { 
 

 
    $('body').on('keydown', 'input[name="textfield-correction-temperature"]', function(c) { 
 

 
     if (String.fromCharCode(c.keyCode).replace(/[^0-9]/g, '') == '') { 
 
      return false; 
 
     } 
 

 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="textfield-correction-temperature" tabindex="0" maxlength="6">

:

여기에 숫자가 아닌 것은 차단하기 위해 정규 표현식을 사용하는 하나의 예 허용되는/허용되지 않는 문자를 쉽게 교체 할 수 있습니다.

+0

고마워요.하지만 어떻게 정규식으로 숫자판의 숫자를 허용 할 수 있습니까? – Erik

+0

게시물에 포함 된 jsfiddle은 숫자 패드로 작업하는 예제를 보여 주어야합니다. 백 스페이스와 같은 다른 키 코드에 대한 정규 표현식은 [here] (http://regexlib.com/CheatSheet.aspx)에서 찾을 수 있습니다. –