1057 votes

Saisie de texte HTML permettent des entrées numériques seulement

Tout rapide façon de définir un entrée de texte HTML ( `` ) pour autoriser uniquement les touches numériques (et '.') ?

1320voto

inspite Points 8872

J'ai utilisé cela, c'est correct

http://www.javascript-coder.com/html-form/javascript-form-validation.phtml

Si vous êtes assez chanceux pour être en HTML5, vous pourriez être en mesure de s'en tirer avec

<input type="number">

Essayez input type=nombre pour voir la version HTML5 dans l'action.

Mais n'oubliez pas vous avez encore doit faire côté serveur de validation!

322voto

geowa4 Points 17712

Utilisez ce DOM

 <input type='text' onkeypress='validate(event)' />
 

Et ce script

 function validate(evt) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]|\./;
  if( !regex.test(key) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}
 

167voto

user235859 Points 848

J'ai cherché longtemps et dur pour une bonne réponse, et nous avons désespérément besoin d' <input type="number", mais de courte durée, ces 2 sont les plus concis façons que je pouvais venir avec:

<input type="text" 
       onkeyup="this.value=this.value.replace(/[^\d]/,'')">

Si vous n'aimez pas la non-accepté le caractère montrant pour une fraction de seconde avant d'être effacée, la méthode ci-dessous est ma solution. Remarque les nombreuses conditions supplémentaires, c'est pour éviter la désactivation de toutes sortes de navigation et les touches de raccourcis. Si quelqu'un sait comment compactify cela, laissez-nous savoir!

<input type="text" 
onkeydown="return ( event.ctrlKey || event.altKey 
                    || (47<event.keyCode && event.keyCode<58 && event.shiftKey==false) 
                    || (95<event.keyCode && event.keyCode<106)
                    || (event.keyCode==8) || (event.keyCode==9) 
                    || (event.keyCode>34 && event.keyCode<40) 
                    || (event.keyCode==46) )">

58voto

Ms2ger Points 7551

HTML5 a <input type=number> , ce qui sonne bien pour vous. Actuellement, seul Opera supporte nativement, mais il y a un projet qui a une implémentation JavaScript.

58voto

vmaksym Points 322

Et un autre exemple, qui fonctionne bien pour moi:

 function validateNumber(event) {
    var key = window.event ? event.keyCode : event.which;

    if (event.keyCode == 8 || event.keyCode == 46
     || event.keyCode == 37 || event.keyCode == 39) {
        return true;
    }
    else if ( key < 48 || key > 57 ) {
        return false;
    }
    else return true;
};
 

Aussi attacher à l'événement keypress

 $(document).ready(function(){
    $('[id^=edit]').keypress(validateNumber);
});
 

Et html:

 <input type="input" id="edit1" value="0" size="5" maxlength="5" />
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X