<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" />
</ContentTemplate>
</asp:UpdatePanel>
Je dois exécuter l'événement de clic Button1
lorsque l'utilisateur appuie sur Enter key
dans Textbox1
Dans l'événement de chargement de page aspx, ajoutez une onkeypress
à la boîte.
this.TextBox1.Attributes.Add(
"onkeypress", "button_click(this,'" + this.Button1.ClientID + "')");
Ajoutez ensuite ce javascript pour évaluer si vous appuyez sur une touche. Si c'est "entrer", cliquez sur le bouton droit.
<script>
function button_click(objTextBox,objBtnID)
{
if(window.event.keyCode==13)
{
document.getElementById(objBtnID).focus();
document.getElementById(objBtnID).click();
}
}
</script>
Placez votre formulaire dans un contrôle de panneau asp.net et définissez son attribut defaultButton avec votre ID de bouton. Voir le code ci-dessous:
<asp:Panel ID="Panel1" runat="server" DefaultButton="Button1">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
J'espère que ceci vous aidera...
Codeproject a une solution complète pour cela:
http://www.codeproject.com/Articles/17241/Capturing-the-Enter-key-to-cause-a-button-click
et comme l'article dit: "décidez quelle solution correspond le mieux à vos besoins"
=================== RÉPONSE ÉDITÉE ==========================
Le lien mentionné ci-dessus parle de deux manières de capturer l'événement "Enter Key":
Javascript (lie l'événement onKeyPress à l'objet et crée une fonction javascript pour vérifier quelle touche a été enfoncée et faire votre logique)
_Page_Load dans le code derrière: _
//Add the javascript so we know where we want the enter key press to go
if (!IsPostBack)
{
txtboxFirstName.Attributes.Add("onKeyPress",
"doClick('" + btnSearch.ClientID + "',event)");
txtboxLastName.Attributes.Add("onKeyPress",
"doClick('" + btnSearch.ClientID + "',event)");
}
Code Javascript:
<SCRIPT type=text/javascript>
function doClick(buttonName,e)
{
//the purpose of this function is to allow the enter key to
//point to the correct button to click.
var key;
if(window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
if (key == 13)
{
//Get the button the user wants to have clicked
var btn = document.getElementById(buttonName);
if (btn != null)
{ //If we find the button click it
btn.click();
event.keyCode = 0
}
}
}
</SCRIPT>
Contrôle de panneau
<asp:Panel ID="panSearch" runat="server" DefaultButton="btnSearch2" Width="100%" >
<asp:TextBox ID="txtboxFirstName2" runat="server" ></asp:TextBox>
</asp:Panel>
Citant:
Notez que la balise Panel a une propriété appelée DefaultButton. Vous définissez Cette propriété est associée à l'ID du bouton sur lequel vous souhaitez cliquer une touche Entrée événement presse. Ainsi, toute zone de texte à l'intérieur du panneau aura Appuyez sur la touche Entrée de celui-ci et appuyez sur le bouton défini dans le bouton DefaultButton propriété du panneau
dans le code html uniquement, ajoutez un panneau contenant les contrôles de la page. Dans le panneau, ajoutez une ligne DefaultButton = "buttonNameThatClicksAtEnter". Voir l'exemple ci-dessous, rien d'autre ne devrait être requis.
<asp:Panel runat="server" DefaultButton="Button1"> //add this!
//here goes all the page controls and the trigger button
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" />
</asp:Panel> //and this too!
Vous pouvez le faire avec javascript/jquery:
<script>
function runScript(e) {
if (e.keyCode == 13) {
$("#myButton").click(); //jquery
document.getElementById("myButton").click(); //javascript
}
}
</script>
<asp:textbox id="txtUsername" runat="server" onkeypress="return runScript(event)" />
<asp:LinkButton id="myButton" text="Login" runat="server" />