2009-04-07 8 views
1

I; m essayer yo implémenter une fonction javacript qui ne permet pas à l'utilisateur de quoi que ce soit d'entrée autre que des nombres à virgule (chiffres)permettent chiffres uniquement pour les entrées

Ceci est mon approche, mais je ne sais pas comment l'améliorer afin de permettre l'insertion des nombres négatifs aussi (permettre la touche '-') et travailler sur IE également.

function digits_only(evt, form) { 
    var evt = evt || window.event, 
     targ = evt.target || evt.srcElement, 
     charCode = evt.which || evt.keyCode, 
     keyChar = String.fromCharCode(charCode), 
     isValid = true; 
    if (charCode > 13) { 
     isValid = /[0-9.]/.test(keyChar); 
     //if a dolt is already in input 
     if (keyChar === '.' && /\./.test(targ.value)) { 
      isValid = false; 
     } 
    } 
    return isValid; 
} 
+0

HI, Est-ce une bonne approche? Que se passe-t-il si l'utilisateur copie ou extrait du texte dans la zone de saisie? Je pense que vous devriez mieux faire la validation sur l'événement de soumission. – rahul

+0

oui, la validation devrait être ajoutée aussi, mais ce qu'il demande maintenant, c'était restreindre l'entrée – Dels

+0

Mais vous ne pouvez pas être sûr de quelle manière l'utilisateur saisit l'entrée. Il peut taper, coller ou même faire glisser du texte. – rahul

Répondre

3

Je pense que vous êtes à la recherche de soi-disant « entrée masques ". Ils sont beaucoup plus puissants que les numéros autorisés. Mais vous pouvez les utiliser pour cela. Google "masque de saisie javascript" ou consultez this jQuery Plugin.

EDIT: On dirait que le plugin ne supporte que des masques liés à longueur fixe, mais le terme peut être un bon point de départ ...

+0

http://stackoverflow.com/questions/2479653/jquery-input-mask-length – Kirzilla

1

S'agit-il d'une application Web ASP.NET? Vous pouvez utiliser le AjaxControlToolkits MaskEditExtender.

Questions connexes