Я использую текстовое поле asp и кнопку поиска. В Safari, если я нажимаю кнопку поиска, я перенаправляюсь на страницу результатов поиска, используя javascript window.location.href. Но, как ни странно, тот же самый javascript не будет перенаправлять на страницу, если я нажму return в текстовом поле.
Используя функцию оповещения, я вижу, что window.location.href имеет правильный URL-адрес, а строка местоположения вверху меняется со страницы поиска (default.aspx) на URL-адрес результатов поиска, однако, когда я нажимаю кнопку ОК для В окне оповещения URL-адрес вверху возвращается на страницу default.aspx. Работает на ie7 / 8 / firefox / chrome, но не на safari. Вот мой код JavaScript, CS и ASPX:
function submitSearchOnEnter(e) {
var CodeForEnter = 13;
var codeEnteredByUser;
if (!e) var e = window.event;
if (e.keyCode) codeEnteredByUser = e.keyCode;
else if (e.which) codeEnteredByUser = e.which;
if (codeEnteredByUser == CodeForEnter)
RedirectToSearchPage();
}
function RedirectToSearchPage() {
var searchText = $get('<%=txtHeaderSearch.ClientID%>').value
if (searchText.length) {
window.location.href = "Search.aspx?searchString=" + searchText;
}
}
protected void Page_Load(object sender, EventArgs e)
{
txtHeaderSearch.Attributes.Add("onkeypress", "submitSearchOnEnter(event)");
}
<asp:Panel ID="pnlSearch" runat="server" DefaultButton="lnkSearch">
<asp:TextBox ID="txtHeaderSearch" runat="server" CssClass="searchBox"></asp:TextBox>
<asp:LinkButton ID="lnkSearch" OnClientClick="RedirectToSearchPage(); return false;"
CausesValidation="false" runat="server" CssClass="searchButton">
SEARCH
</asp:LinkButton>
</asp:Panel>
Я пытался вернуть false; что не позволяет мне вводить какие-либо символы в поле поиска. Я провел целую вечность в Интернете, пытаясь найти решение. Может быть, это как-то связано с setTimeout или setTimeInterval, но это не сработало, если я не сделал это неправильно.