好吧,我正在努力让ASP.NET网址看起来用户友好,就像解释in this question一样。所以我创建了一个ASP.Net表单,并在其上放置了asp:textbox
和asp:button
。另外,我设置onclientclick
属性来调用JS函数,该函数通过设置windows.location.href
导航到智能URL。在Firefox中它运行良好,但在IE和Opera中,浏览器首先导航到智能URL,然后关闭连接并使用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>
答案 0 :(得分:2)
你的onclientclick事件需要返回false;
答案 1 :(得分:0)
表单接受一个属性,显示哪些按钮设置为默认值:在
中使用它<form id="form1" runat="server" defaultbutton="Button1">
其中Button1是页面上按钮的id。