2009-10-21 9 views
0

J'attrape la touche Entrée à la touche de mon formulaire pour l'empêcher de soumettre le formulaire sauf s'il s'agit de la dernière entrée; sinon, il agit comme un onglet (trouve l'entrée suivante et se concentre dessus).Détection lorsque la saisie semi-automatique est visible

Des idées sur la façon de pas déclenchent event.preventDefault() si le remplissage automatique du navigateur est en cours de sélection?

+0

Je viens d'essayer ceci sur firefox, et j'ai découvert que l'auto-complétion n'est même pas détectable par firebug, c'est-à-dire que vous ne pouvez pas l'inspecter. Je suppose que cette diminution des chances de détecter à partir de JavaScript –

+0

dans tous les cas, jetez un oeil à celui-ci http://stackoverflow.com/questions/1567610/browser-textbox-autocomplete-event-when-does-this-happen –

Répondre

0

Je ne sais pas si vous utilisez un plug-in spécifique ou si vous avez la possibilité de modifier facilement le code source de saisie semi-automatique, mais je voudrais essayer de faire quelque chose comme ceci:

  • Trouver la fonction qui est utilisée pour déclencher l'affichage de la saisie semi-automatique
  • Définir une valeur booléenne lorsque se déclenche la visibilité de la saisie semi-automatique (true pour visible, false pour non)
  • Vérifiez l'état de la valeur booléenne à chaque fois que vous essayez de catch enter (ou tab)

Notez que vous devez rendre la valeur booléenne accessible au public dans le contexte de l'objet de saisie semi-automatique.

Encore une fois, sans connaître les détails si votre mise en œuvre, il est difficile de dire la meilleure façon de le changer, mais il pourrait travail quelque chose comme ceci:

var Autocomplete = { 
    bIsVisible: false, 
    display: function() { 
    // toggle visibility of the autocomplete 
    this.bIsVisible = !this.bIsVisible; 
    } 
} 

Vous ne pourrait alors l'utiliser en faisant quelque chose comme ça :

alert(Autocomplete.bIsVisible); // returns false 
Autocomplete.display(); // triggers the display of the autocomplete 
alert(Autocomplete.bIsVisible); // returns true 
+0

I n'utilise pas de plugin pour la saisie semi-automatique, j'utilise la saisie semi-automatique du navigateur. cela fonctionnerait autrement – SethZanderJensen

Questions connexes