2010-01-16 3 views
0

Eh bien, j'essaie de rendre les URL ASP.NET à la recherche conviviale, comme il a été expliqué in this question. J'ai donc créé un formulaire ASP.Net, et placé asp:textbox et asp:button dessus. J'ai également défini l'attribut onclientclick pour appeler la fonction JS qui accède à l'URL intelligente en définissant windows.location.href. Dans Firefox, cela fonctionne bien, mais dans IE et Opera, le navigateur navigue d'abord vers une URL intelligente, puis ferme la connexion et envoie une publication à l'aide d'une action de formulaire asp.net.Comment définir le bouton html par défaut pour le formulaire ASP.Net?

J'ai essayé de le résoudre en utilisant le bouton html au lieu du serveur. Cela fonctionne, mais le problème est qu'il ne peut pas être défini par défaut pour le formulaire asp.net. Donc 'si l'utilisateur clique dessus, il fait son travail. Mais si l'utilisateur appuie simplement sur Entrée lorsque le formulaire est actif, le formulaire effectue son action, donc le bouton n'est pas pressé et la réécriture de l'URL JS ne se produit pas. Alors, comment puis-je résoudre ce problème?

Mon JS ressemble à ceci:

function searchRedirect() { 
    var query = $get('colSearch'); 
    window.location.href = 'colSearch?q=' + query.value; 
    return false; 
} 

et Search.aspx j'ai

<form id="MainForm" runat="server" method="get"> 
     <asp:TextBox id="colSearch" runat="server" Width="615px" CssClass="searchLine"></asp:TextBox> 
     <input id="Button1" type="button" value="Search!" onclick="searchRedirect();" class="search" /> 

J'ai aussi essayé avec asp:button:

<form id="MainForm" runat="server" method="get" defaultbutton="submitReqBtn"> 
     <asp:TextBox id="colSearch" runat="server" Width="615px" CssClass="searchLine"></asp:TextBox> 
     <asp:Button runat="server" Text="Search!" ID="submirReqBtn" 
      onclientclick="searchRedirect();" CausesValidation="False" 
      EnableViewState="False" UseSubmitBehavior="False"></asp:Button> 
</form> 

Répondre

2

Votre événement OnClientClick doit revenir faux;

+0

J'ai essayé cela avec 'asp: button' - le navigateur ferme les connexions. J'ai ajouté un exemple de code dans la question - peut-être que je me suis trompé dans mon code. – flashnik

+0

Eh bien, j'ai ajouté 'return false;' à onclientclick dans la description du bouton afin qu'il ressemble à 'onclientclick =" searchRedirect(); retour faux; "' et tout a commencé à fonctionner. Merci! – flashnik

0

La forme accepte un attribut indiquant lequel des boutons sont définis par défaut: l'utiliser comme dans

<form id="form1" runat="server" defaultbutton="Button1"> 

où Button1 est l'identifiant d'un bouton sur la page.

+0

Il ne fonctionne pas donc un bouton spécifié par défaut devrait implémenter l'interface IButtonControl. Un bouton Html ne l'implémente pas puisque c'est juste un morceau de code html – flashnik

Questions connexes