2010-07-25 23 views
0

J'utilise le plugin masque jQuery deComment personnaliser le plugin jQuery Masked d'entrée

http://digitalbush.com/projects/masked-input-plugin/

Je souhaite personnaliser mon plugin et ai essayé de mon mieux de le faire, mais je ne peux pas.

Ce que je veux est

  1. Je peux entrer des chiffres.
  2. Tous les chiffres seront automatiquement mis en forme (,) après chaque 3e numéro. (.)
  3. Seulement deux chiffres après

J'utilise ce masque:

$("#product").mask("999,999,999.99",{placeholder:" "}); 

Le problème est si je dois taper seulement 150,50, je dois apporter mon curseur sur la endroit exact et type.

Par exemple dans le masque ci-dessus si je tape 150.50 la zone de texte ressemble à ceci: [][][],[][][],150.50 où [] est un espace vide. Ce que je veux, c'est seulement pour 150.50 être montré, sans le supplément (,) s.
Si je tape 1150.50 alors afficher 1 150.50, mais je veux que la mise en forme se produise automatiquement une fois que j'ai fini de taper et que je ne veux pas afficher d'autres (,) s.

+0

Si un utilisateur entre "5", voulez-vous qu'il affiche ".05"? – Adam

+0

@adam Merci si l'utilisateur saisit 5, il devrait être 5.00 – air

+0

Ensuite, si un utilisateur tape "5", "0", et "3", comment cela atteint "5.03" (comme vous le souhaitez)? Cela ne donnera-t-il pas "500.03", à tort? – Adam

Répondre

2

La réponse de Gaby est correcte et offre beaucoup plus d'options que la mienne. Cependant, j'ai trouvé une solution pour vos besoins spécifiques. Voir here.

$('input').bind('keyup blur', function(){ 
    var i, j, final = '', input = $(this), 
     raw = input.val().replace(/[^\d]/g, ''); 
    while (raw.substr(0, 1) === '0' && raw.length > 2) { //remove leading 0s for large numbers 
     raw = raw.substr(1); 
    } 
    while (raw.length < 2) { //pad with up to two 0s for small numbers 
     raw = '0' + raw; 
    } 
    for (i = 1; i <= raw.length; i++) { //format the number as ##,###,###.## 
     j = raw.length - i; 
     final = 
      (i === 2 ? '.' : ((i + 1) % 3) === 0 && i != raw.length ? ',' : '') 
      + raw.substr(j, 1) 
      + final; 
    } 
    input.val(final); 
}); 
+0

Merci adam c'est une belle solution – air