2010-07-30 6 views
0

J'utilise VSTS 2008 + C# + .Net 3.5 + IIS 7.0 + ASP.Net pour développer une application web. L'application Web a une page aspx appelée default.aspx. Et je veux mettre en œuvre l'effet que lorsque l'utilisateur appuie sur la touche entrée du clavier, c'est le même effet du bouton "Action". Des idées comment mettre en œuvre?comment faire la détection de page html enter touche enfoncée?

Voici le fichier default.aspx,

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title></title> 
</head> 
<body> 

    <script type="text/javascript"> 
    function requery() { 
     var query = location.search.substring(1); 
     var pairs = query.split("&"); 
     var param1Value = document.getElementById("txtParam1").value; 

     url = "/Default.aspx?param1=" + param1Value; 
     for (var i = 0; i < pairs.length; ++i) { 
     var pair = pairs[i]; 
     if ((pair.indexOf("param1") != 0) && (pair.length > 0)) { 
      url += "&" + pair; 
     } 
     } 
     location.href = url; 
    } 
    </script> 

    <form id="form1" runat="server"> 
    <div> 
    <asp:TextBox ID="txtParam1" runat="server"></asp:TextBox> 
    <input type="button" value="Action" onclick="requery()" /> 
    </div> 
    </form> 
</body> 
</html> 

Voici le code derrière default.aspx.cs fichier,

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      txtParam1.Text = Request.QueryString["param1"]; 
     } 
    } 
} 

Répondre

1

Ajoutez un gestionnaire d'événements à l'événement keydown du document. explication dans les commentaires.

function keydownHandler(e) { 

     if (e.keyCode == 13) { // 13 is the enter key 

      requery(); // call your function. 

      // alternately, give your button an id and used 
      // document.getElementById('myID').click(); 

      // prevent the browser from doing whatever it normally 
      // does when you push the enter key. 
      // (not tested for this situation, may need tweaking) 
      if (e.preventDefault) { 
       e.preventDefault(); // FF,chrome    
      } 
      else { 
       return false;  // IE 
      } 
     } 
    } 

    // register your handler method for the keydown event 
    if (document.addEventListener) { 
     document.addEventListener('keydown', keydownHandler, false); 
    } 
    else if (document.attachEvent) { 
     document.attachEvent('onkeydown', keydownHandler); 
    } 
+0

Merci, votre solution fonctionne! – George2

2

Si vous naviguez sur Internet Explorer à partir c'est un problème ennuyeux. Ajouter une zone de texte avec un style de display:none;visibility:hidden; La touche Entrée répondra de manière appropriée. Cela se produit généralement sur les formulaires avec une entrée de texte dans IE. Ajoutez le gestionnaire masqué comme mentionné ci-dessus sous votre premier champ de saisie

+0

Merci RandomNoob, existe-t-il un exemple de code existant? C'est la première fois que je mets en place des choses comme ça. – George2

+1

mettez-le sous votre première zone de texte – kd7

Questions connexes