jQuery: modification de la valeur d'entrée sur pression de touche
Chaque fois qu'un point '.' est tapé dans mon entrée (type=nombre) de terrain, je veux remplacer par une virgule ','.
$(box).find('input[type=number]').keypress(function(evt){
if(evt.which==46){
$(this).val($(this).val()+',');
evt.preventDefault();
}
});
L'événement est bien tiré, mais au lieu de cela, le terrain est totalement vide. Quel est le problème?
MODIFIER
La raison pour laquelle je fais cela, c'est que le Chrome (dernière version), contrairement à la recommandation HTML5, l'utilisation de virgules et jetez-le point input type=nombre. Je suis en train de développer pour Chrome cause je ne peux pas tester mon application quelque part d'autre pour le moment. Aucun commentaire sur ce (anormal ?) la situation serait appréciée.
- Il est recommandé d'utiliser
keyup
événement à la place. - un
alert($(this).val())
afficher quoi que ce soit - entrée
type="number"
n'acceptera pas de virgule,
. Vous pourriez avoir à changer d'entréetype=text
- en fait c'est ce que le W3C dit à propos type=nombre, mais Chrome au contraire accepte uniquement les virgules, et supprimer des points et rien venir par la suite. C'est pourquoi je voulais le faire, en premier lieu.
- keyup n'a même pas de déclencher l'événement.
- Oui, la valeur précédente est bien capturée
Vous devez vous connecter pour publier un commentaire.
Cela pourrait fonctionner si vous tapez et toujours envie de mettre le ',' signe à la fin du texte. Mais que faire si vous placez le curseur dans le milieu du texte, puis appuyez sur un '.' signe?
Peut-être que votre document n'est pas déjà prêt:
Vous pouvez simplement utiliser une sous-chaîne de la sorte:
Cependant ce n'est probablement pas une solution idéale.
Votre code semble fonctionner lors de l'exécution sur jsfiddle:
http://jsfiddle.net/cornel_gav/cDE3L/
type=text
mais l'OP est l'aide de l'entréetype=number
.nous sommes ici, mon ami, je ne sais pas pourquoi, il semble utile de mot de code est de 190 au lieu de 110.
essayer :
et ce pour un aperçu en direct
http://jsfiddle.net/RTEcJ/8/
prendre un regard sur les codes de touches et vous pouvez l'essayer dans l'entrée pour vérifier quel est le mot de code dont vous avez besoin:
http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
on()
ne fonctionne pas. Plus important encore, aveckeyup
,evt.which
correspond au mot de code et pas le charcode. Au lieu de 46, il sera de 110 pour le point du pavé numérique, et d'autres pour d'autres façons de le faire (en fonction de mappage de clavier).Pour rendre le char de remplacement du travail à n'importe quelle position du curseur, vous pouvez lier à l'événement keyup et remplacer le déjà inséré Personnage dans cette.val().