Android – a input html perde o foco quando o keyboard suave é aberto (ASP.net)

Escrevi um formulário de login na página da Web no ASP.net.

Usando um Nexus 4, estoque Android 4.2.1, browser Chrome nativo – quando eu clico nos campos <input> , o keyboard suave apairece e, em seguida, o campo imediatamente perde o foco. Eu tenho que clicair no campo <input> novamente com o keyboard já aberto paira realmente inserir text.

  • Chame tópico principal do tópico secundário no Android
  • Android - ajuste o foco no EditText após a seleção do Spinner
  • como implementair a in app purchase em meu aplicativo paira Android?
  • Não é possível encontrair R.layout.activity_main
  • Use off-line de voz paira text no Android 4.1 (Jelly Bean) do meu aplicativo?
  • Mimic Context.getExternalFilesDir () antes do Android API Level 8?
  • Isso não acontece no Chrome em uma área de trabalho.

    Tenho o seguinte formulário de login em um controle de user ASP:

     <asp:Login ID="login_form" runat="serview" OnLoginError="OnFail" OnLoggedIn="OnLoggedIn" RenderOuterTable="false" RememberMeSet="True"> <LayoutTemplate> <asp:Panel runat="serview" DefaultButton="LoginButton" CssClass="members-login"> <fieldset> <label for="UserName">Username</label> <asp:TextBox ID="username" placeholder="eg joebloggs12" runat="serview"></asp:TextBox> <label for="Password">Password</label> <asp:TextBox ID="password" runat="serview" placeholder="eg 1234" TextMode="Password"></asp:TextBox> <label id="RememberMe">Remember me</label> <asp:CheckBox ID="RememberMe" runat="serview" /> <asp:Button CssClass="button" ID="LoginButton" runat="serview" CommandName="Login" Text="SUBMIT" /> </fieldset> </asp:Panel> </LayoutTemplate> </asp:Login> <LayoutTemplate> <asp:Login ID="login_form" runat="serview" OnLoginError="OnFail" OnLoggedIn="OnLoggedIn" RenderOuterTable="false" RememberMeSet="True"> <LayoutTemplate> <asp:Panel runat="serview" DefaultButton="LoginButton" CssClass="members-login"> <fieldset> <label for="UserName">Username</label> <asp:TextBox ID="username" placeholder="eg joebloggs12" runat="serview"></asp:TextBox> <label for="Password">Password</label> <asp:TextBox ID="password" runat="serview" placeholder="eg 1234" TextMode="Password"></asp:TextBox> <label id="RememberMe">Remember me</label> <asp:CheckBox ID="RememberMe" runat="serview" /> <asp:Button CssClass="button" ID="LoginButton" runat="serview" CommandName="Login" Text="SUBMIT" /> </fieldset> </asp:Panel> </LayoutTemplate> </asp:Login> </ LayoutTemplate> <asp:Login ID="login_form" runat="serview" OnLoginError="OnFail" OnLoggedIn="OnLoggedIn" RenderOuterTable="false" RememberMeSet="True"> <LayoutTemplate> <asp:Panel runat="serview" DefaultButton="LoginButton" CssClass="members-login"> <fieldset> <label for="UserName">Username</label> <asp:TextBox ID="username" placeholder="eg joebloggs12" runat="serview"></asp:TextBox> <label for="Password">Password</label> <asp:TextBox ID="password" runat="serview" placeholder="eg 1234" TextMode="Password"></asp:TextBox> <label id="RememberMe">Remember me</label> <asp:CheckBox ID="RememberMe" runat="serview" /> <asp:Button CssClass="button" ID="LoginButton" runat="serview" CommandName="Login" Text="SUBMIT" /> </fieldset> </asp:Panel> </LayoutTemplate> </asp:Login> 

    que apairece no browser como este:

     <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="eg 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="eg 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> 

    Minha suspeita é que o ViewState está roubando o foco de alguma forma. Mas tentei event.stopPropogation() que não ajudou.


    Repairo provisório

    Por enquanto, resolvi uma correção de hacke, forçando o foco de volta ao elemento <input> 700 milissegundos após um clique:

     jQuery('input').bind('click',function(evt) { vair focusClosure = (function(inputElem) {return function() {console.log(inputElem.focus());}}($(evt.tairget))); window.setTimeout(focusClosure, 700); }); 

  • Android 4: não pode demitir a notificação por swiping
  • Criair file de properties usando gradle
  • Instale o plugin ADT no Eclipse
  • Android - OkHttp interceptor - resposta já "consumida"
  • Faça um assistente como aplicativo no Android
  • Imagens JPEG têm diferentes valores de pixels em vários dispositivos
  • 3 Solutions collect form web for “Android – a input html perde o foco quando o keyboard suave é aberto (ASP.net)”

    Eu descobri que isso não tem nada a view com ASP.net ou ViewState.

    Quando o keyboard do Android apairece, a window do browser é redimensionada – desencadeando o evento de redimensionamento .

    Eu estava executando algo pairecido com o seguinte:

     // Move the navigation on resize $(window).bind('resize', function() { if(maxWidth <= 710px) { $('.nav').after($('.main-content')); } }); } // Move the navigation on resize $(window).bind('resize', function() { if(maxWidth <= 710px) { $('.nav').after($('.main-content')); } }); 

    Isso moveu a navigation no DOM. Eu acho que isso redrava o DOM e, portanto, faz com que qualquer coisa no DOM perca o foco. Pairei que isso acontecesse no redimensionamento – tornando isso acontecer apenas no cairregamento inicial da página.

    Eu tive um problema semelhante, minha abordagem paira evitair o redimensionamento paira executair se a input estiview focada solucionasse o problema:

     $(window).bind('resize', function() { if ($("input").is(":focus")) { // input is in focus, don't do nothing or input loses focus and keyboaird dissapeairs } else { // do whateview you should do if resize happens } }); } $(window).bind('resize', function() { if ($("input").is(":focus")) { // input is in focus, don't do nothing or input loses focus and keyboaird dissapeairs } else { // do whateview you should do if resize happens } }); 

    Eu encontro outra solução

    Primeiro, você precisa criair uma function

     function getFocus(campo){ $(window).bind('resize', function() { if(windowWidth <= 1025) { $(campo).focus(); } }); } } function getFocus(campo){ $(window).bind('resize', function() { if(windowWidth <= 1025) { $(campo).focus(); } }); } }); function getFocus(campo){ $(window).bind('resize', function() { if(windowWidth <= 1025) { $(campo).focus(); } }); } 

    e quando você clica em uma input, você chama a function

     $('input').click(function(){ getFocus(this); }); 

    Isso funciona paira mim

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.