2010-01-16 116 views
0

好吧,我正在努力使ASP.NET网址看起来很人性化,就像它解释了in this question一样。所以我创建了一个ASP.Net表单,并在其上放置了asp:textboxasp:button。我还设置onclientclick属性来调用通过设置windows.location.href导航到智能URL的JS功能。在Firefox中,它运行良好,但在IE和Opera中,浏览器首先导航到智能url,然后它关闭连接并使用asp.net表单操作发送回发。如何将html按钮设置为ASP.Net窗体的默认值?

我试图用html按钮来代替服务器来解决它。它的工作原理,但问题是它不能被设置为asp.net窗体的默认值。所以'如果用户点击它,它会完成它的工作。但是,如果用户只是在表单处于活动状态时按下Enter键,表单才会执行其操作,所以按钮不会被按下,并且不会发生JS URL重写。那我该如何解决这个问题呢?

我的JS是这样的:

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

和search.aspx我有

<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" /> 

我也试图与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> 

回答

2

你的OnClientClick事件需要返回假;

+0

我试着用'asp:button' - 仍然是浏览器关闭连接。我在问题中添加了示例代码 - 可能是我在代码中弄错了。 – flashnik 2010-01-16 15:21:51

+0

好吧,我加了'return false;'在onclientclick中的按钮描述,所以它看起来像 'onclientclick =“searchRedirect(); return false;”' 和一切开始工作。 谢谢! – flashnik 2010-01-21 12:47:22

0

的形式接受一个属性表示该按钮被设置为默认值:使用它作为在

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

其中Button1的是在页面上的按钮的ID。

+0

它没有工作,因此指定为默认的按钮应该实现IButtonControl接口。 Html按钮不能实现它,因为它只是一段html代码 – flashnik 2010-01-16 15:09:52