Плагин jQuery для форматирования ввода - PullRequest
5 голосов
/ 14 июня 2009

Я хочу принимать значения в любом из следующих форматов:

  • - $ 5
  • - 5,00 $
  • $ 5
  • $ 5,00

Можно ли это сделать, используя Плагин с маской ввода ?

Если нет, какой плагин я ищу?

Как указать, что символ необязательный?

код, который я получил до сих пор

$.mask.definitions['~']='[ +-]';
$(".currency").mask("~$9");

Ответы [ 5 ]

5 голосов
/ 20 апреля 2011

Просто чтобы уточнить ответ Энтони, он использует плагин jquery-maskmoney:

https://github.com/plentz/jquery-maskmoney

5 голосов
/ 14 июня 2009

Вот как я бы реализовал правило проверки:

$('.myinput').val().match(/^[+-]?\$\d(?:\.\d\d)?$/)

Проблема с вашим шаблоном в том, что он не фиксированной длины, поэтому его сложно кодировать в маске, и вы можете встретить людей, которые дают $ 3,5, а это не то, что вам нужно. Я думаю, что при таком вашем паттерне будет трудно не прибегнуть к сопоставлению регулярных выражений.

Вы можете рассмотреть вопрос о том, чтобы сделать центовую часть обязательной, и в этом случае ваш шаблон почти в порядке, просто добавьте 0,99 в конце, и он должен это сделать (хотя как пользователь, я бы не хотел начинать свою валюту с пробела характер ...).

4 голосов
/ 29 марта 2011

Я думаю, что это поможет вам.

Использовать синтаксис

$(mask_id).maskMoney({showSymbol:false,decimal:'.',precision:2});

Вы можете показать символ, но, вероятно, его лучше скрыть.

1 голос
/ 23 марта 2010
$.mask.definitions['~']='[ +-]';

$ (»валюта ") маска (" ~ $ 9 .99" ?);.

разве это не работает ???

1 голос
/ 14 июня 2009

Я знаю, что в маске вы также можете сделать некоторые маски необязательными, так что вы можете обойтись без этого

$.mask.definitions['~']='[ +-]';
$(".currency").mask("~$9?.99");
...