2016-11-04 11 views
-1

В конечном счете, я хочу, чтобы маска позволяла вводить целое число или вводить десятичную/десятичную дату: разрешить 0 - 2 цифры после десятичной точки.Включить регулярное выражение в маску ввода Javascript

Действительный Входной

1 
1. 
1.1 
1.11 
111111111 
111111111. 
111111111.1 
111111111.11 

Invalid Input

a 
a. 
1.a 
1.111 
1.1111 
  • строка позволяет любое количество цифровых символов, но только позволяет 1 десятичный/период
    • если период/десятичное существует : допускается только двухзначный знак после десятичного знака

Это регулярное выражение делает только что:

^\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

a down vote без объяснений? – Neil

+0

Вы можете легко использовать атрибут 'pattern' для входов в HTML5. Это позволяет вам маскировать элементы ввода с регулярным выражением точно так, как вы хотите. Ознакомьтесь с [документацией] (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});