Je travaille sur la validation du téléphone et ai besoin d'un formatage automatique de l'entrée avec le numéro de téléphone et j'autorise uniquement l'ajout de caractères numériques. Cependant quand j'essaye de limiter l'entrée using le keydown et la pression, IPhone me permet d'entrer # et *. Quand j'ai vérifié la valeur du keydown, ils sont tous les deux identiques avec respectivement 3 et 8 (keycode 51 et 56). Cela fonctionne parfaitement dans les navigateurs Android, mais échoue dans l'iPhone.iPhone retournant le même événement keydown pour (hachage et 3) et (Asterisk et 8)
Toute personne rencontrant un problème similaire.
$(formSelector + ' input[name^="phone"]').on('keydown keypress',function (e) {
// Allow: backspace, delete, tab, escape, and enter
if (e.keyCode == 46 || e.keyCode == 8 || e.keyCode == 9 || e.keyCode == 27 || e.keyCode == 13 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)
) {
// let it happen, don't do anything
return;
} else {
// Ensure that it is a number and stop the keypress
if (e.shiftKey || (e.keyCode < 48 || e.keyCode > 57) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
I a essayé également une autre méthode qui a été suggérée dans stackoverflow à se lier avec entrée événements « PropertyChange d'entrée » et en utilisant ensuite mise en correspondance de motif. mais cela fonctionne correctement dans IPhone, mais échoue dans Android.
$(formSelector + ' input[name^="phone"]').bind('input propertychange', function() {
var text = $(this).val();
if (isNaN(text)) {
$(this).val(text.replace(/[^\d]/gi, ''));
}
});
Est-ce que quelqu'un a une solution commune pour ce problème?
Nous vous remercions à l'avance
Est-ce que le [jQuery démo] (http://api.jquery.com/keydown/) montrent des différences dans les événements? – tom
jQUeryDemo affiche le même code clé. 3 et # sont identiques et 8 et * sont identiques. Mais la différence que je trouve dans le navigateur mobile vs ordinateur est que le shifkey devient vrai dans l'ordinateur en entrant # et *, mais la même chose est fausse dans le mobile parce que nous n'utilisons aucune touche – Anooj
Toutes les autres propriétés (par exemple 'shiftKey ') aussi pareil? – tom