Rob*_*low 15 html asp.net android webforms input
我在ASP.net上写了一个网页登录表单.
使用Nexus 4,安装Android 4.2.1,本机Chrome浏览器 - 当我点击<input>
字段时,会出现软键盘,然后该字段立即失去焦点.我必须<input>
在键盘已经打开的情况下再次单击该字段以实际输入文本.
这在桌面上的Chrome中不会发生.
我在ASP用户控件中有以下登录表单:
<asp:Login ID="login_form" runat="server" OnLoginError="OnFail" OnLoggedIn="OnLoggedIn" RenderOuterTable="false" RememberMeSet="True">
<LayoutTemplate>
<asp:Panel runat="server" DefaultButton="LoginButton" CssClass="members-login">
<fieldset>
<label for="UserName">Username</label>
<asp:TextBox ID="username" placeholder="e.g. joebloggs12" runat="server"></asp:TextBox>
<label for="Password">Password</label>
<asp:TextBox ID="password" runat="server" placeholder="e.g. 1234" TextMode="Password"></asp:TextBox>
<label id="RememberMe">Remember me</label>
<asp:CheckBox ID="RememberMe" runat="server" />
<asp:Button CssClass="button" ID="LoginButton" runat="server" CommandName="Login" Text="SUBMIT" />
</fieldset>
</asp:Panel>
</LayoutTemplate>
</asp:Login>
Run Code Online (Sandbox Code Playgroud)
在浏览器中看起来像这样:
<div class="members-login" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'ContentPlaceHolderDefault_contentBody_masterContent_login_form_LoginButton')">
<fieldset>
<label for="UserName">Username</label>
<input name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$contentBody$masterContent$login_form$username" type="text" id="ContentPlaceHolderDefault_contentBody_masterContent_login_form_username" placeholder="e.g. joebloggs12" />
<label for="Password">Password</label>
<input name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$contentBody$masterContent$login_form$password" type="password" id="ContentPlaceHolderDefault_contentBody_masterContent_login_form_password" placeholder="e.g. 1234" />
<label id="RememberMe">Remember me</label>
<input id="ContentPlaceHolderDefault_contentBody_masterContent_login_form_RememberMe" type="checkbox" name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$contentBody$masterContent$login_form$RememberMe" checked="checked" />
<input type="submit" name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$contentBody$masterContent$login_form$LoginButton" value="SUBMIT" id="ContentPlaceHolderDefault_contentBody_masterContent_login_form_LoginButton" class="button" />
</fieldset>
</div>
Run Code Online (Sandbox Code Playgroud)
我怀疑是ViewState以某种方式窃取了焦点.但我尝试了event.stopPropogation()
哪些没有帮助.
临时修复
现在我已经解决了一个hacky修复,<input>
在点击后700毫秒迫使焦点回到元素上:
jQuery('input').bind('click',function(evt) {
var focusClosure = (function(inputElem) {return function() {console.log(inputElem.focus());}}($(evt.target)));
window.setTimeout(focusClosure, 700);
});
Run Code Online (Sandbox Code Playgroud)
Rob*_*low 37
我发现这与ASP.net或ViewState无关.
当Android键盘出现时,将调整浏览器窗口的大小 - 触发resize事件.
我正在运行类似于以下内容:
// Move the navigation on resize
$(window).bind('resize', function() {
if(maxWidth <= 710px) {
$('.nav').after($('.main-content'));
}
});
Run Code Online (Sandbox Code Playgroud)
这改变了DOM中的导航.我想这会重绘DOM,因此导致DOM中的任何内容失去焦点.我在调整大小时停止了这种情况 - 使其仅在初始页面加载时发生.
小智 9
我有一个类似的问题,我的方法是防止调整大小如果输入是焦点解决问题:
$(window).bind('resize', function() {
if ($("input").is(":focus")) {
// input is in focus, don't do nothing or input loses focus and keyboard dissapears
} else {
// do whatever you should do if resize happens
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13402 次 |
最近记录: |