11484 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Nouvelle coté js et jquery. Aussi j'ai trouvé des bouts de codes jquery à utiliser pour séparer les milliers lors de la saisie d'un nombre. Cela ne marche pas ou bien ai je mal adapté à mon code. Voici mes 2 adaptations de code, possible d'avoir votre avis ?


% block javascripts %}
    {{ parent() }}
    <script>

        $(function () {

            $('#Conso').on('keypress', function (num) {
                    return ('#Conso' + num).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, function($1)
                    {
                        return $1 + '#Conso'
                    });
                });

       });
    </script>


% block javascripts %}
    {{ parent() }}
    <script>
        $(function () {

 $('#Conso').on('keypress', new Intl.NumberFormat().format('#Conso'));

       });
    </script>
Bonjour,

À la rigueur, il y aurait ça :
var separator = " ";
$('#Conso').on('keyup', function (e){
  var o = $(this).val().replace(new RegExp(separator, "g"), '')
 $(this).val( o.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1'+separator) )
})


EDIT : si c'est du float ça commence à déconner à partir des dix millièmes (regex à retravailler)
Modifié par SolidSnake (23 May 2017 - 14:49)
Bonjour,
mettre un espace sécable ne me semble pas idéal... même si dans la plupart des cas, ça n'a pas d'incidence.
Smiley smile
Modifié par Zelena (23 May 2017 - 15:12)
Dans ce cas là, dans un input ça ne devrait pas trop poser de soucis.
Mais peu importe le séparateur, il faudra de toute façon l'effacer si récupération des données il y a !

EDIT : sinon, pour m'amuser, j'ai aussi fait ça :
$('#Conso').on('keyup', function (e){
  var v = $(this).val().replace(/\s/g, '').replace(',', '.');
  e.key!=','&&e.key!='.' ? !isNaN(parseFloat(v)) ? $(this).val(parseFloat(v).toLocaleString("fr-FR")): null : null;
})

Même problème avec les décimales (même pire, il s'amuse à faire des arrondis).
Et même constat avec Intl.NumberFormat("fr-FR").format()

NB : eh oui, j'adore les deux ternaires illisibles
Modifié par SolidSnake (23 May 2017 - 16:04)
merci bcp !
Enfin de compte je vais gérer cela directement en twig (si j'avais su avant) car c'est juste pour de l'affichage.
{{ variable | number_format(2,'', ' ') }}

Car la 2nde formule avec le chiffre "2 000.5" me donne en BDD 2\u00a0000,5
La 1ere formule en BDD me donne le chiffre en "2 000.5"
merci bcp !
Enfin de compte je vais gérer cela directement en twig (si j'avais su avant) car c'est juste pour de l'affichage.
{{ variable | number_format(2,'', ' ') }}

Car la 2nde formule avec le chiffre "2 000.5" me donne en BDD 2\u00a0000,5
La 1ere formule en BDD me donne le chiffre en "2 000.5"
mathieu1004 a écrit :
Rofl c'est dommage que j'ai perdu bêtement du temps sur un bug bizarre avec le point et la virgule ...

Le même que moi je pense, dès que l'on dépasse 3 décimales... Smiley biggrin