2009-07-28 7 views
0

J'ai un contrôle utilisateur tiers (un contrôle captcha), qui a une image captcha, une zone de texte à l'intérieur. J'utilise le contrôle utilisateur ci-dessus sur ma page Web. J'ai 3 boutons de soumission sur ma page Web (Valider Captcha, Soumettre une page, Ajouter un utilisateur). Lorsque je clique sur le bouton Validate Captcha submit à l'aide de la souris, je valide si captcha est vide et affiche une alerte javascript.Définition du bouton par défaut dans asp.net 2.0

Le problème survient lorsque j'entre le texte captcha valide dans la zone de texte et que j'appuie sur la touche Entrée lorsque le curseur se trouve dans la zone de texte. La page vient de rafraichir. Je ne parviens pas à ajouter l'événement keypress à la zone de texte et à appeler l'événement de bouton Valider le bouton Captcha car j'utilise le contrôle utilisateur tiers que je ne peux pas modifier.

En outre, Page.ClientScript.RegisterHiddenField (...) ne fonctionnera pas dans mon cas car j'ai deux autres boutons de soumission dans la même page.

Seule l'option restante est de les placer dans des panneaux et de définir le bouton par défaut.

S'il vous plaît laissez-moi savoir si quelqu'un a de meilleures options pour y parvenir.

Répondre

0

Salutations! Moi aussi j'utilise beaucoup de contrôles tiers. La chose à retenir à propos de ces contrôles, c'est qu'à la fin ils n'émettent que du HTML. Cela signifie que vous pouvez utiliser le DOM pour accéder et attacher des gestionnaires d'événements tels que onKeyPress. L'astuce consiste à identifier comment votre créateur de contrôle a nommé le contrôle que vous recherchez, dans ce cas un {textbox}. Le moyen le plus simple d'y parvenir consiste simplement à exécuter la page et à afficher la source de la page. Il est là que vous pouvez trouver le nom tel qu'il est rendu et envoyé au navigateur, après tout ce que vous devez nous faire utiliser document.getElementById pour obtenir l'objet et la configuration de votre gestionnaire

Exemple:

<script> 
    //Place this AFTER your textbox control is declared in the HTML 
    //Get the textbox 
    var textbox = document.getElementById('nameOfRenderedControlHere'); 
    //Assign the event handler and function you want it to call 
    textbox.onclick = function() { validateCaptcha(); }; 

    function validateCaptcha() 
    { //Do your Stuff here } 
</script> 

Cela devrait être .. testé, laissez-moi savoir si vous avez des questions.

0

Mettez le captcha dans son propre <asp:Panel> et ajoutez une propriété DefaultButton pour le panneau avec l'ID du bouton d'envoi du captcha.

Questions connexes