我在主页面上有一个搜索栏和搜索按钮。为了处理移动键盘的输入或搜索按钮,我有一个检查键码事件的功能。如果键码是搜索键,该功能将触发搜索按钮的点击事件。一切都适用于Android手机,但在iPhone中,当当前页面是主页时,它会重定向到搜索结果页面(这是正确的页面),但除此之外,它将始终转到主页。我已经尝试了几种解决方案,但我没有找到运气。我尝试的一些解决方案是更改window.location.href,window.location.replace,在搜索按钮上放置一个css游标:指针和onclick属性,但这些都不起作用。
我迷失在iPhone上搜索按钮的工作方式。
更新:我在btn.click()行后面发出警告,以在表单上显示action属性。令人惊讶的是,在警报上单击确定后,它将重定向到正确的页面,然后我删除了警报,并返回到相同的错误。我疯了。
HTML:
<asp:TextBox ID="searchboxMobile" runat="server" CssClass="m-index-tbx-
search search-div-textbox" Text="Type Part Number Here"
onfocus="OnSearchBoxFocus('searchboxMobile');"
onblur="OnSearchBoxLostFocus('searchboxMobile');"
onkeypress="doClick('searchButtonMobile', event);" ></asp:TextBox>
<asp:Button ID="searchButtonMobile" runat="server"
PostBackUrl="~/SearchResults.aspx"
formnovalidate="formnovalidate" CssClass="search-button m-search-button" />
jQuery - 该函数似乎正在工作,因为它能够捕获搜索键或输入密钥但单击事件似乎无法正常工作。我用window.location.href =&#34;〜/ SearchResults.aspx&#34;替换了这段代码。和window.location.replace(&#34;〜/ SearchResults.aspx&#34;)使其重定向到正确的页面,但没有工作。
function doClick(buttonName, e) {
//the purpose of this function is to allow the enter key to
//point to the correct button to click.
var key;
if (window.event) {
key = window.event.keyCode; //IE
} else {
key = e.which; //firefox
}
if (key == 13) {
//Get the button the user wants to have clicked
var btn = document.getElementById(buttonName);
if (btn != null) { //If we find the button click it
btn.click();
event.keyCode = 0;
}
}
}
答案 0 :(得分:0)
最后我要让搜索按钮在iPhone上运行。似乎在执行btn.click()之后,它正在提交表单两次,从而将action属性更改为主页。通过在btn.click()事件之前放置e.preventDefault()使其正常工作。另外,我没有提到我有两个提交按钮,第一个提交按钮用于桌面版本,只有当用户在移动设备上时才会隐藏。我完全删除了提交按钮(桌面)的标记,而不是隐藏它。
希望这个答案可以帮助将来的某个人。