2016-11-04 5 views
-1

궁극적으로 정수만 입력 할 수있는 마스크가 필요하거나 소수점/마침표를 입력하는 경우 소수점 뒤에 0-2 자리를 사용할 수 있습니다.정규 표현식을 자바 스크립트 입력 마스크로 바꾸기

유효한 입력

1 
1. 
1.1 
1.11 
111111111 
111111111. 
111111111.1 
111111111.11 

잘못된 입력

a 
a. 
1.a 
1.111 
1.1111 
  • 문자열은 숫자 문자의 수를 허용하지만 단지 1 소수점/기간
    • 기간/소수가 존재하는 경우 허용 : 소수점 이하 2 자리 문자 만 허용

이 정규 표현식은 그 작업을 수행합니다

^\d*\.?([\d]){0,2}$ 

는 지금은 입력에 마스크로이를 적용해야합니다. Robin Herbots' Inputmask을 사용하고 있습니다. 나는 정말로이 일을하는 데 어려움을 겪고있다.

별칭 currency이 있다는 것을 알고 있지만 원하는대로 정확하게 작동하지 않습니다. 내가 원하는 것은 입력이 없으면 입력이 초점/비 초점에서 공백으로 기본 설정되는 것입니다. currency의 기본값은 0.00입니다. 또한 사용자가 필드에서 모든 항목을 삭제할 수 있도록 비워 둘 수 있습니다. currency은 입력을 비워 두지 않습니다. 대신에만 0.00 필드를 떠날 수 있습니다.

$('.moneyfield').inputmask("999", {rightAlign: true, numericInput: true}); 

특정 마스크는 "999"자리에 있어야합니다. 내장 된 마스크를 사용하는 방법을 알 수 없었기 때문에 정규 표현식을 마스크에 삽입하려고했습니다. 지금까지 두 가지 전략으로 실패했습니다.

또 다른 시도는 currency 별칭을 사용하고 내가 원하는대로 오버 라이드했습니다. 나도 그걸로 성공하지 못했습니다. 다음은 currency 마스크의 정의입니다.

currency: { 
     prefix: "$ ", 
     groupSeparator: ",", 
     alias: "numeric", 
     placeholder: "0", 
     autoGroup: !0, 
     digits: 2, 
     digitsOptional: !1, 
     clearMaskOnLostFocus: !1 
    } 
+0

설명이없는 투표가 있습니까? – Neil

+0

HTML5에서 입력의 'pattern' 속성을 쉽게 사용할 수 있습니다. 그것은 원하는대로 정규 표현식으로 입력 요소를 마스킹 할 수 있습니다. [documentation] (http://www.w3schools.com/TAGS/att_input_pattern.asp) –

+0

@VivekPradhan 훌륭한 제안을 확인하십시오. 불행히도 Safari에서 작동해야하며 Safari에서는이 기능이 지원되지 않습니다. – Neil

답변

1

알아 냈습니다. currency 별칭 내에서 몇 개의 필드를 재정의해야합니다.

$('.money_field').inputmask({alias: 'currency', rightAlign: true, placeholder: "", prefix: '', autoGroup: false, digitsOptional: true}); 
관련 문제