Как установить кнопку html по умолчанию для формы ASP.Net?

Что ж, я пытаюсь сделать URL-адреса ASP.NET удобными для пользователя, как было объяснено в этом вопросе. Поэтому я создал форму ASP.Net и поместил в нее asp:textbox и asp:button. Также я установил атрибут onclientclick для вызова функции JS, которая переходит к умному URL-адресу, установив windows.location.href. В Firefox это работает хорошо, но в IE и Opera браузер сначала переходит к умному URL-адресу, но затем закрывает соединение и отправляет обратную передачу, используя действие формы asp.net.

Я попытался решить это с помощью html-кнопки вместо серверных. Он работает, но проблема в том, что его нельзя установить по умолчанию для формы asp.net. Итак, если пользователь нажимает на него, он выполняет свою работу. Но если пользователь просто нажимает ввод, когда форма активна, форма выполняет свое действие, поэтому кнопка не нажимается и перезапись URL-адреса JS не происходит. Итак, как я могу решить эту проблему?

Мой 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>

person flashnik    schedule 16.01.2010    source источник


Ответы (2)


Ваше событие onclientclick должно возвращать false;

person Kris Krause    schedule 16.01.2010
comment
Я пробовал это с asp:button - все равно браузер закрывает соединения. Я добавил пример кода в вопрос - возможно, я ошибся в своем коде. - person flashnik; 16.01.2010
comment
Ну, я добавил return false; в onclientclick в описании кнопки, чтобы она выглядела как onclientclick="searchRedirect(); return false;", и все заработало. Спасибо! - person flashnik; 21.01.2010

Форма принимает атрибут, показывающий, какая из кнопок установлена ​​по умолчанию: используйте его как в

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

где Button1 — идентификатор кнопки на странице.

person lmsasu    schedule 16.01.2010
comment
Это не работает, поэтому кнопка, указанная по умолчанию, должна реализовывать интерфейс IButtonControl. Кнопка Html не реализует ее, поскольку это всего лишь фрагмент HTML-кода. - person flashnik; 16.01.2010