12
votes

Comment désactiver le comportement de Soumettre de l'ASP: imagebutton?

J'ai une touche image dans une page qui peut être déclenchée sur un clic de souris, il est déclenché par défaut sur Entrée Appuyez sur également que je veux désactiver.

Je connais l'attribut "MoyensUmitBeHaviour" dans ASP: Bouton, est-il un moyen de faire la même chose dans ASP: imagebutton?


6 commentaires

Je vérifie les propriétés UTILISUMITBEHAVIOUR du bouton, mais il semble que cela ne résout pas votre problème (pour le bouton), n'est-ce pas?


Faites attention à l'orthographe. J'ai remarqué que vous utilisez l'orthographe britannique / canadienne de «comportement». Bien sûr, IntelliSense va attraper ça. :)


@Canavar, oui ça fait. Je cherche une caractéristique similaire à Imagebutton.


@Andy: Désolé, je voulais dire "MoyensUmitbehavior".


@Amby: Pas besoin de m'excuser. Je voulais juste m'assurer que cela ne vous pose aucun problème.


ASP: ImageButton Hérités d'ASP: Image plutôt que ASP: BOUTON , c'est pourquoi il ne prend pas en charge la propriété utilisationsUBMITEHAVOR.


8 Réponses :


11
votes

Je supposerai que vous avez une sorte de commande d'entrée et que vous ne voulez pas d'entrer la touche saisie automatique lorsqu'un accident d'utilisateur frappe la touche Entrée. Si cela vous permet de joindre un événement JavaScript OnKeyPress à chaque contrôle que vous souhaitez désactiver ce comportement.

jQuery.fn.DisableEnterKey =
    function()
    {
        return this.each(function()
        {
            $(this).keydown(function(e)
            {
                var key = e.charCode || e.keyCode || 0;
                // return false for the enter key
                return (key != 13);
            })
        })
    };

// You can then wire it up by just adding this code for each control:
<script type="text/javascript" language="javascript">
    $('#txtYourTextBox').DisableEnterKey();
</script>


5 commentaires

J'ai essayé cette approche. ASP: ImageButton ne semble pas gérer l'événement enkinge à côté du client. Code:


Mise en œuvre de l'opération ONKYPRESSE Comme vous l'avez fait l'événement côté serveur. Vous devez le méfier avec JavaScript. Je vais éditer ma réponse pour le montrer correctement.


Mettre cette fonction de désactionnement dans l'événement OnKeyDown de la balise signifie que l'utilisateur ne serait pas en mesure d'ajouter des retours de chariot à une zone de texte multiligne. Aussi c'est un peu drôle: si (clé == 13) renvoie false; sinon retourne vrai;


Oui c'est pourquoi j'ai noté les autres méthodes. S'il n'y a pas de boîte de texte multiligne, il serait valide. Sinon, j'ai fourni d'autres alternatives. Je ne connais pas le scénario exact des utilisateurs, j'ai donc essayé de fournir plus d'une réponse.


Dans mon cas, je veux réellement utiliser la clé Entrée pour autre chose. Cela ressemble à utiliser un bazooka pour tuer une mouche et souffler un trou dans mon mur dans le processus.



1
votes

Utilisez une image ASP: image à la place. Ensuite, placez du code JavaScript dans l'ONCLICK " JavaScript: document.getelementByID (" ImageClicked "). Setattribute (" valeur "," vrai "); document.myform.submit (); code>"

" Définissez une valeur de champ masqué (à l'aide de JavaScript) pour indiquer au code côté serveur que l'image a cliqué sur l'image. P> xxx pré>

puis, à la fin de la manipulation de la réinitialisation du serveur de réinitialisation du serveur. Valeur de Hiddenfield: P>

document.getElementById('imageClicked').setAttribute('value', 'true');


0 commentaires

2
votes

Utilisez la réponse de Kelsey (cette réponse est Wiki'ed)

... Mais veuillez noter quelques points lorsque vous le mettez en œuvre.

  1. Je recommanderais la méthode de JavaScript ordinaire si vous n'utilisez pas déjà JQuery. Si vous faites cette méthode, revenez simplement (keynum! = 13) Ne faites pas quelque chose de stupide comme si (vrai) retourne vrai; sinon retourne faux;

  2. Vous n'êtes pas obligé d'attribuer le code derrière le code derrière. Cela peut être fait dans le balisage et c'est beaucoup plus propre quand vous le faites.

  3. Ne désactive pas la touche Entrée de votre formulaire. Vous pouvez le faire dans vos entrées uniquement, mais si vous le faites dans l'ensemble de la forme, vous ne pourrez pas ajouter de retour de chariot dans une Textarea.

  4. Si vous utilisez JQuery, je vous recommanderais d'ajouter une classe CSS appelée "DistableenterKey" et de l'affectation à vos éléments de formulaire que vous souhaitez désactiver, puis appelez la méthode JQuery de Kelsey sur $ (". DistableenterKey") dans Le document prêt.

  5. Ne répondez pas trop similaire à celui qui, même si vous n'êtes pas complètement d'accord avec la réponse. Et même si la réponse était simple et que des milliers de personnes ont probablement fait l'enchantement. C'est "copier". Qui est similaire à être un "coupeur" ou un "conte de chapin" ... qui est mauvais.

    (Cette réponse a été une wiki de la communauté comme thread thread a été idiote)


4 commentaires

BTW Merci de copier ma réponse par jour de retard, puis de voter ma réponse. Le vote au bas était à l'heure exacte que vous avez posté votre réponse ... peut-être juste une coïncidence.


Désolé, je ne lis jamais votre message entier. J'ai vu le "si (vrai) retourne vrai; sinon retourne faux;" Bit et le fait que vous avez eu l'affectation de l'entreprise à partir du code derrière et que vous avez pensé que le reste de la réponse n'était pas à la peine d'être lu. Maintenant que j'ai lu votre message, mon message est similaire, mais il existe des différences de base entre les deux méthodes. Par exemple: je suggère qu'ils ajoutent l'opération sur le balisage. J'utilise une classe CSS pour trouver les entrées que je veux tuer avec JQuery. Je ne recommande jamais jamais de désactiver la clé Entrée partout dans un formulaire, car cela gâcherait le comportement Textarea.


Là, tout va mieux. Je vais prendre un F sur le test, car j'ai clairement copié l'un des algorithmes les plus compliqués et les plus uniques que jamais vu.


Je n'ai aucun problème avec des gens qui affichent des réponses similaires (c'est assez courant). C'est quand ils le font et vottent d'autres réponses correctes, puis je le vois comme abus.



2
votes

Le formulaire exécutera le premier bouton qu'il trouve sur la page lorsque vous appuyez sur Entrée. Si vous pouvez déplacer le imagebutton en bas de la page, ce n'est donc plus le premier bouton du marquage et utilisez CSS pour la positionner correctement, cela devrait corriger votre problème. J'ai réparé la même chose exacte la semaine dernière et cela a fonctionné pour moi. Je suis allé avec cette solution car elle n'avait pas besoin de JavaScript pour fonctionner correctement.


0 commentaires

7
votes

Si vous mettez votre contenu dans un ASP: panneau Vous pouvez utiliser la propriété par défaut defaultbutton pour définir un bouton différent de la valeur par défaut afin que votre bouton d'image ne soit pas cliqué. < Pré> xxx

Dans cet exemple, le btn_test2 sera cliqué lorsque vous appuyez sur Entrée dans laquelle normalement BTN_TEST1 serait cliqué sur


2 commentaires

C'est une bonne idée. Mais ne fonctionnerez pas dans mon cas, car mon bouton d'image fait partie d'un autre contrôle de l'utilisateur. Je ne peux donc pas forcer le parent contrôle de définir la valeur par défautbutton.


Excellent. Même fonctionner si le bouton Image est avant (à l'extérieur) du panneau.



1
votes

vous voulez quelque chose comme xxx


0 commentaires

1
votes

Voir le lien suivant.C'est peut-être résolu pour tout bouton de soumission par défaut. http://weblog.kevinattard.com /2011/08/aspnet-Distable-Submit-Form-on-enter-key.html


0 commentaires

0
votes

Veuillez utiliser ce code

<script type="text/javascript" language="javascript">
$(document).ready(function {
    $("#<%=imageClicked.ClientID%>").prop('disabled',true)
});
</script>


0 commentaires