Deux décimales avec un point, mais un seul point
bonjour,
je suis plutôt développeur php, mais pour mes besoins, un collègue m'a fournit une fonction qui, en théorie permet de fixer le nombre de décimales à 2 chiffres dés que l'utilisateur clic ailleurs.
Le séparateur étant le point.
Cependant, je me rends compte que l'utilisateur peut saisir plusieurs point dans le champ input (exemple : 21.03.04). Et dans ce cas, la fonction est inactive.
Voici la fonction :
Code:
1 2 3 4 5 6 7 8 9
| $('.two-digits').keyup(function(){
if($(this).val().indexOf('.')!=-1){
if($(this).val().split(".")[1].length > 2){
if( isNaN( parseFloat( this.value ) ) ) return;
this.value = parseFloat(this.value).toFixed(2);
}
}
return this; //for chaining
}); |
Auriez-vous une idée pour que seul les chiffres décimaux, avec 2 chiffres après la virgule ne soient pris en compte à la perte de focus du champ input ?
Merci
champ number et 2 décimales ?
bonjour,
moi et un collègue tentons de restreindre un champ input number à 2 décimales sur tous les navigateurs.
Pour cela, j'ai un champ <input type="number" step="0.01" pattern="[0-9]+([\.|,][0-9]+)?" />
et un javascript ci-dessous pour empêcher la 3eme decimale, la virgule, une classe two-digits sur tous les champs de type number
Ce code fonctionne bien sous chrome, mais firefox non, car pour lui, le point est un séparateur de millier, et pas un séparateur de décimale.
Mon collègue est en congés, et c'est lui qui est spécialisé dans javascript jquery, et moi php.
Auriez-vous déjà eu à gérer ce genre de chose (empêcher la 3eme décimale, compatible avec IE, firefox et chrome) ?
Merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| $(':input.two-digits[type="number"]')
.on('keypress',function(e){
/*if(e.ctrlKey==true && e.charCode == 118){
$(this).trigger('focusout');
return this;
}*/
if($.inArray(e.keyCode,[37,39,35,36,8,9,46])==-1){
//var input = String.fromCharCode(e.charCode);
var regex = new RegExp("[0-9\.]");
if (regex.test(e.key)) {
return this;
} else {
e.preventDefault();
}
} else {
return this;
}
})
.on('keyup',function(e){
if($(this).val().indexOf('.')!=-1){
if($(this).val().split(".")[1].length > 1){
if( isNaN( parseFloat( this.value ) ) ) return;
this.value = parseFloat(this.value).toFixed(2);
}
}
return this; //for chaining
})
.on('focusout',function(e){
var txt =$(this).val();
//console.debug(regex.test('[-+]?([0-9]*.[0-9]+|[0-9]+)'));
var regex = new RegExp(/^[+-]?(?:[1-9]\d*|0)?(?:\,\d{1,2})?$/gm);
if($(this).val()!=""){
$(this).removeClass('input_grand_obligatoire');
if(regex.test($(this).val())){
$(this).parent().removeClass('has-error');
} else {
$(this).parent().addClass('has-error');
$(this).val("");
};
}
}); |