antony.trupe
antony.trupe

Reputation: 10834

jQuery plugin for formatting inputs

I want to accept values in any of the following format:

Is it possible to do that using Masked Input Plugin?

If not, what plug-in am I looking for?

How do I indicate a character is optional?

The code I've got so far

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

Upvotes: 5

Views: 21867

Answers (5)

Diego Plentz
Diego Plentz

Reputation: 7190

Just to clarify Antony response, the plugin that he's using is jquery-maskmoney:

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

Upvotes: 5

sherif sakr
sherif sakr

Reputation: 41

I think this will help you.

Use the syntax

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

You can show the symbol but it is probably better to hide it.

Upvotes: 4

baku
baku

Reputation: 11

$.mask.definitions['~']='[ +-]';

$(".currency").mask("~$9?.99");

is it not work???

Upvotes: 1

glmxndr
glmxndr

Reputation: 46576

Here is how i would implement the validation rule :

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

The problem with your pattern is that it is not fixed-length, so hard to code in mask, and you may encounter some people giving $3.5, which is not what you want. With such a pattern of yours, I think it will be hard not to fall back on regexp matching.

You may consider making the cent part mandatory, in which case your pattern is almost ok, just add .99 at the end and it should do it (although as a user I would hate to have to start my currency with a space character...).

Upvotes: 5

Jake
Jake

Reputation: 3467

I know that in mask you can also make some of the mask optional, so you might be able to get away with this

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

Upvotes: 1

Related Questions