Bon, si ça peut aider quelqu'un qui tomberait par là, j'ai repris le code de lacfab, et j'ai ajouté la possibilité du ctrl sous Firefox, la tabulation et une autre fonction qui n'autoriserait que les lettres :
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 44
|
function chiffres(event) {
// Compatibilité IE / Firefox
if(!event && window.event) {
event=window.event;
}
var code = event.keyCode;
var which = event.which;
// IE
if ((code < 48 || code > 57) && code != 46 && code != 8 && code != 9 && code != 16 && code != 13) {
event.returnValue = false;
event.cancelBubble = true;
}
// DOM (dont Firefox)
if ((which < 48 || which > 57) && (code < 37 || code > 40) && code != 46 && code != 8 && code != 9 && code != 16 && code != 13 || event.ctrlKey) {
event.preventDefault();
event.stopPropagation();
}
}
function lettres(event) {
// Compatibilité IE / Firefox
if(!event&&window.event) {
event=window.event;
}
var code = event.keyCode;
var which = event.which;
// IE
//Si le keycode ne correspond pas à [A-Z] ou à [a-z] ou aux autres autorisés...
if (!((code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code == 8 || code == 9 || code == 13 || code == 16 || code == 46)) {
event.returnValue = false;
event.cancelBubble = true;
}
// DOM (dont Firefox)
if (!((which >= 65 && which <= 90) || (which >= 97 && which <= 122) || (code >= 37 && code <= 40) || code == 8 || code == 9 || code == 13 || code == 16 || code == 46 || event.ctrlKey)) {
event.preventDefault();
event.stopPropagation();
}
} |
À noter que :
- IE ne reconnaît que keyCode et pas which et Firefox ne reconnaît pas tous les keyCode (Pour les autres navigateurs, à vous de voir)
- Il faut ajouter onKeyPress="return chiffres(event);" (ou lettres(event)) dans l'input concerné
- Touches autorisées :
Chiffres
0-9 (keyCode ou which 48 à 57)
Lettres
A-Z et a-z (keyCode ou which 65 à 90 et 97 à 122)
Ctrl+qqch (event.ctrlKey , hélas, si on laisse ça, l'utilisateur a possibilité de coller des lettres/chiffres, et IE se moque de cet event, le Ctrl+qqch étant autorisé tout le temps)
backspace (keyCode 8)
tabulation (keyCode 9)
entrée (keycode 13)
shift (keyCode 16)
flèches (keycode 37 à 40) [Pour IE, ces keyCode correspondent à %, &, ' et ( ]
suppr (keycode 46)
Partager