10170 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,
ma question concerne la detection de la touche "done" du clavier numerique "mobile".

J'ai un input type "tel".
Au clic, cela affiche automatiquement le clavier numérique, ainsi qu'un layer au dessus de ma maquette. J'aimerai détecter le clic sur "done" du clavier, pour fermer ce dernier, ainsi que mon layer.

J'ai donc utilisé :
$('input').keypress(function (e) {
        var key = e.which;
        if(key == 13 || key == 10 )  // pour detecter la touche "enter"
        {
            console.log("ca marche !")
            // ici ma fonction pour masquer mon layer...
        }
});


cela fonctionne tres bien lorsque je test sur un desktop, via l'inspecteur, et la "device toolbar" pour simuler un smartphone. Certe je n'ai pas de visualisation du clavier, mais au clic sur "enter", la fonction fonctionne pour masquer mon layer.

Par contre, lorsque je test via mon iphone...
le clic sur "done" du clavier numérique ferme le clavier, mais ne lance pas ma fonction permettant de masquer mon layer...

Ma question est donc de savoir si "le key" de la touche "done" du clavier numérique est bien "13" ??

ou

existe t il une facon de lancer une fonction au clic de "done" ?
As-tu essayé de détecter l'évènement change sur <input> ?
Meilleure solution
Et si tu fais ton event sur le blur ? Il me semble que l'on perd le focus si on clique sur Done…
Yordi a écrit :
Et si tu fais ton event sur le blur ? Il me semble que l'on perd le focus si on clique sur Done…


A priori le focus est toujours bon. Etant donné que je vois mon layer bien net.
Du moins, sur un iphone via safari.

Mais merci pour l'idéee
bazooka07 a écrit :
As-tu essayé de détecter l'évènement change sur &lt;input&gt; ?


MERCI BAZOOKA !
ca fonctionne nickel (à condition de changer la valeur).

voici le bout de code que cela donne :
$('input').change(function() {
    // masquer mon layer
});