J’ai un formulaire simple que je dois soumettre automatiquement lorsque le texte est entré.
Je peux utiliser onChange ou onKeyUp sans obtenir le meilleur résultat.
HTML est:
Et jQuery
jQuery("#fusionSearchForm").keyup(function() { this.submit(); });
Ceci se soumet chaque fois qu’un caractère est entré. Je préférerais que ce soit plutôt – il y avait un délai avant la soumission pour que vous puissiez terminer votre frappe – que le focus rest sur le champ de saisie prêt à être saisi après la soumission (si rechargé)
Un moyen de retarder un form.submit () afin que l’utilisateur puisse finir de taper avant que le formulaire soit soumis?
(UPDATE pour coder en un type plus “jQuery” de soumission)
Le fr. Anders
Cela devrait marcher. Soumet le formulaire quand rien n’a été tapé pendant 500 ms
var timerid; jQuery("#fusionSearchForm").keyup(function() { var form = this; clearTimeout(timerid); timerid = setTimeout(function() { form.submit(); }, 500); });
C’est une mauvaise idée. Vous ne voulez pas contourner les contrôles auxquels les utilisateurs s’attendent sur les entrées de formulaire. Si vous ne voulez pas de bouton d’envoi, attendez au moins de l’envoyer jusqu’à ce que vous capturiez un “entrer”.
Comment pouvez-vous savoir quand un utilisateur a fini de taper à l’aide d’un lecteur autre qu’un lecteur de lecture des pensées , à moins que vous ne souhaitiez qu’il tape “retour” ou “entrée”? Les utilisateurs ne sauront pas qu’ils sont supposés suspendre un instant pour laisser le formulaire être soumis à l’expiration du délai imparti ou qu’ils doivent se dépêcher pour que leur recherche soit entrée avant l’expiration du délai d’attente de 500 MS.
Voir: cette question
Si vous souhaitez commencer à renvoyer les résultats immédiatement après toute soumission, vous pouvez effectuer une sorte de procédure d’ajax autocomplete.
autocomplete http://img9.imageshack.us/img9/5526/autocompletegoogle.png
Voici un exemple jQuery de soumission sur une entrée:
$("input").keypress(function(e) { switch (e.keyCode) { case 13: $("#formid").submit(); return false; default: return true; } });