2010-07-15 5 views
2

J'utilise cette fonction pour autoriser uniquement les nombres dans une entrée de texte.Autoriser seulement les nombres dans une entrée avec javascript et autoriser copier et coller?

$('input').bind('keydown', function(e) { 

    var key = e.charCode || e.keyCode || 0; 

    return (
     key == 8 || 
     key == 9 || 
     key == 46 || 
     (key >= 37 && key <= 40) || 
     (key >= 48 && key <= 57) || 
     (key >= 96 && key <= 105)); 
}); 

Comment autoriser le copier-coller? J'ai essayé d'ajouter le code 17 pour le contrôle, mais cela ne fonctionne toujours pas.

Y at-il quelque chose de spécial que vous devez faire pour les combinaisons de touches?

Merci

+0

Cette première ligne n'est-elle pas un sélecteur jQuery? Ne devrait-il pas avoir au moins une balise jQuery? – Adam

+0

ou est la balise réservée aux questions spécifiques à jQuery? (juste curieux) – Adam

+0

@ advs89 pensez-y à nouveau (et ne soyez pas paresseux pour lire la question complète pas seulement la première ligne ...) – galambalazs

Répondre

-2

Conserver un enregistrement du dernier code clé enfoncé. Puisque vous utilisez onkeydown, un cmd-v apparaîtrait comme un événement avec le code clé 224 (cmd), puis un événement avec le code clé 86 (v). Si la clé précédente correspond à cmd et la dernière v, laissez-la passer.

(vous probablement vérifier ctrl pour Windows/Linux dérouleurs ainsi)

+0

Il y a plus de moyens que de coller: à partir du contexte et des menus d'édition, par exemple. Il y a aussi le glisser. –

5

Vous mieux avec quelque chose comme:

$('input').bind('keyup', function(e) { 
    this.value = this.value.replace(/[^0-9]/g,''); 
}); 

Ou vous pouvez également utiliser l'événement change. Dans ce cas, peu importe comment les données entrent dans le champ, elles seront validées (et les entrées non numériques supprimées).

+0

+1 pour la simplicité et l'infaillibilité de l'utilisation de l'événement 'change'. –

Questions connexes