La manipulation bouton ENTRÉE dans la zone de texte, ASP.NET
J'ai le problème suivant dans ASP.NET: il y a un formulaire qui contient une zone de texte et un bouton à côté de ce qui est censé être pressé par l'utilisateur après le remplissage de la case (exemple sur http://www.burnthespam.info, cliquez sur "Choisissez votre one", ou lors de l'utilisation de ReCaptcha dans une fenêtre contextuelle). Souvent, au lieu de cela, les utilisateurs appuyez sur ENTER
pour soumettre le formulaire.
Cela ne cause pas de l'événement click sur le bouton pour être déclenchée et éventuellement provoquer un comportement inattendu. Dans burnthespam, j'ai "essayé" de le résoudre par la vérification des données à l'intérieur de la zone de texte (mais maintenant, si vous faites quelque chose de différent que d'appuyer sur ENTER
c'est comme vous pressé) de solution de contournement.
Savez-vous si il y a une autre façon de gérer la soumission de formulaire avec ENTER
clé, ou un bout de code Javascript que lorsque vous appuyez sur ENTER
appuie sur le bouton j'aime?
MODIFIER
Je veux gérer la touche ENTRÉE de l'événement sur la côté serveur, c'est à dire. J'ai déjà
protected void button_Click(object sender, EventArgs e)
{
Response.Redirect(...);
}
Je veux que la méthode à appeler non pas seulement quand je soumettre le formulaire en utilisant le bouton (clic ou de l'espace avec la lumière), mais aussi lorsqu'un utilisateur appuie sur ENTER
de la mise au point de la zone de texte
EDIT 2
Savez-vous si il est possible de par programme cliquez sur un bouton en Javascript? Peut-être qu'il n'est pas possible de prévenir l'hameçonnage/spam (voir Facebook et "partager à des amis" par exemple) mais je voudrais demander...
OriginalL'auteur usr-local-ΕΨΗΕΛΩΝ | 2010-12-04
Vous devez vous connecter pour publier un commentaire.
Il existe quelques façons dont vous pouvez définir un bouton par défaut à l'aide de l'objet de formulaire DefaultButton de la propriété ou de la DefaultButton propriété d'un groupe spécial, mais je les ai trouvés à être peu fiables dans le passé dans différents navigateurs donc j'ai appuyer sur le javascript.
Le seul inconvénient de ce code, vous devez éteindre l'événement de validation avec une directive de page, mais il devrait déclencher des événements de clic, et de déclencher des validateurs et tout ça.
Voici un exemple du code que nous utilisons. Normalement, j'aurais mis le registre de la fonction dans une classe utilitaire, mais pour cet exemple, c'est dans le code de la page.
Essayez ceci.
C'est bizarre. Si le javascript est là, et il semble que le javascript sur le bouton et le bouton fonctionne, alors on pourrait penser que le script sur la zone de texte doit avoir le même résultat. Est-il possible que le gaia zone de texte est l'enregistrement d'un événement onKeyDown ainsi et qui est la cause pour ne pas appeler le script en ligne. Vous devriez essayer le débogueur de script et de voir si le dopostback méthode est en fait appelé.
Essayez d'utiliser ce ... je l'ai eu à travailler en remplaçant le onkeyevent avec juste "if (event.keyCode == 13) { alert ("go");} " ... "aller" boîte d'alerte s'affiche à chaque fois entrer est cliqué. Mais quand j'ai mis ton code d'origine de retour dans la page est rafraîchie et le LinkButton cliquez sur l'événement n'est jamais appelée. Des idées? (Mon code est presque identique à votre exemple, sauf que j'ai juste un LinkButton que les deux zones de texte sont appel) je suis en essais ce dans IE9.
A été en mesure de le faire fonctionner en changeant les éléments suivants: ["onKeyDown"] = "if (event.keyCode == 13) {" + ControlToClick.Page.ClientScript.GetPostBackEventReference(p) + "; return false; }"; La chaîne.format() n'était pas un problème, j'ai juste enlevé au cours de mes tests et je l'ai eu à travailler comme cela donc laissé comme ça.
OriginalL'auteur Chris Mullins
Ici est un moyen plus facile fonctionne très bien pour ASP.NET:
Ajouter ceci dans votre .page aspx
Et les ajouter sur le Page_Load dans votre aspx.cs fichier
OriginalL'auteur Apollo
Vous pouvez essayer ceci:
Vous aurez besoin de remplacer "yourButtonId" avec l'ID qui est rendu dans le balisage pour votre bouton, c'est à dire la propriété ClientID dans votre .NET code. L' __doPostback fonction est celle qui est définie par .NET pour la manipulation de l'ensemble de ses publications.
OriginalL'auteur joelt