Question

J'ai un bouton d'image dans une page qui peut être déclenchée sur un clic de souris, par défaut, il se déclenche sur entrer la presse aussi que je veux désactiver.

Je sais "UseSubmitBehaviour" attribut dans asp: Button, est-il possible de faire la même chose en asp: ImageButton

?
Était-ce utile?

La solution

Je suppose que vous avez une sorte de contrôles d'entrée et vous ne voulez pas entrer à l'auto keypress soumettre lorsqu'un accident utilisateur frappe sur la touche Entrée. Si oui, vous pouvez joindre un événement onkeypress javascript pour chaque contrôle que vous souhaitez désactiver ce comportement pour.

function disableEnterKey(e)
{
     var key;
     if (window.event) key = window.event.keyCode; // Internet Explorer
     else key = e.which;

     return (key != 13);
}

// In your aspx file Page_Load do the following foreach control you want to disable
// the enter key for:
txtYourTextBox.Attributes.Add("OnKeyPress", "return disableEnterKey(event);");

Si vous devez désactiver la touche Entrée complètement clé formulaire de soumission. cas, utilisez le gestionnaire OnKeyDown sur l'étiquette de <body> sur votre page.

Le code javascript:

if (window.event.keyCode == 13) 
{
    event.returnValue = false; 
    event.cancel = true;
} 

Avec JQuery ce serait beaucoup plus propre, plus facile et la méthode recommandée. Vous pouvez faire une extension avec:

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>

Autres conseils

Si vous mettez votre contenu dans un asp: Panel vous pouvez utiliser le DefaultButton Propriétés pour définir un autre bouton par défaut de sorte que votre bouton d'image ne sera pas cliqué sur <. / p>

<asp:Panel runat="server" ID="pnl_Test" DefaultButton="btn_Test2">
    <asp:ImageButton runat="server" ID="btn_Test1" />
    <asp:Button runat="server" ID="btn_Test2" />
</asp:Panel>

Dans cet exemple, le btn_Test2 sera cliqué lorsque vous appuyez sur Entrée où normalement btn_Test1 serait cliqué

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 plus bas de la page il est donc plus le premier bouton dans le balisage et utiliser les CSS pour le positionner correctement, cela devrait résoudre votre problème. Je fixe exactement la même chose la semaine dernière et cela a fonctionné pour moi. Je suis allé avec cette solution, car il n'a pas besoin de JavaScript pour fonctionner correctement.

Réponse Utiliser Kelsey (Cette réponse est wiki'ed)

... mais s'il vous plaît noter quelques choses quand vous le mettre en œuvre.

  1. Je vous recommande la méthode ancienne javascript simple si vous n'êtes pas déjà en utilisant jQuery. si vous faites cette méthode, il suffit de retourner ne le font pas quelque chose de stupide comme si (true) return true (keynum = 13!); sinon retourne false;

  2. Vous ne devez pas affecter onkeydown du code sous-jacent. Cela peut être fait dans le balisage et il est beaucoup plus propre quand vous faites.

  3. Ne désactivez pas la touche entrée de votre forme entière. Vous pouvez le faire dans vos entrées seulement, mais si vous le faites sous la forme entière vous ne serez pas en mesure d'ajouter un retour chariot dans une zone de texte.

  4. Si vous utilisez jQuery, je vous recommande d'ajouter une classe CSS appelé « disableEnterKey » et l'assigner à vos éléments de formulaire que vous souhaitez désactiver, puis en appelant la méthode jQuery de Kelsey sur $ ( «disableEnterKey ») en le document prêt.

  5. Ne répondez pas trop semblable à qui que ce soit sur le SO, même si vous n'êtes pas d'accord pleinement avec la réponse. Et même si la réponse était simple et des milliers de personnes ont probablement fait samething. Il est « la copie ». Ce qui est similaire à être un « coupe » ou un « conte de cancans » ... ce qui est mauvais.

(cette réponse a été la communauté wiki'ed que ce fil de question a obtenu stupide)

Utilisez un aspic: l'image à la place. Ensuite, placez un code javascript dans le onclick "javascript:document.getElementById('imageClicked').setAttribute('value', 'true'); document.myform.submit();"

Définir une valeur de champ caché (à l'aide de javascript) pour indiquer le code côté serveur que l'image a été cliqué.

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

Ensuite, à la fin de la manipulation du postback sur le serveur réinitialiser la valeur du hiddenField:

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

vous voulez quelque chose comme

<form ...>

  <!-- some code here -->

  <button style='display:none' onclick='return false'>here comes the magic</button>

  <button>normal button </button>

</form>

Voir les link.This suivants peuvent être résolus pour tout bouton par défaut soumettre problème. http://weblog.kevinattard.com /2011/08/aspnet-disable-submit-form-on-enter-key.html

S'il vous plaît utiliser ce code

<script type="text/javascript" language="javascript">
$(document).ready(function {
    $("#<%=imageClicked.ClientID%>").prop('disabled',true)
});
</script>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top