2015-02-02 2 views
13

Ich arbeite an Web-Basis mobil (HTML) application.Is es eine Möglichkeit,
erkennen Tastaturereignis wie wenn Tastatur sichtbar und Tastatur auszublenden, Basis erfassen auf diesem kann ich anderes Bildschirmlayout steuern. Ich versuchte Fokus, Unschärfe, Browser Resize Event, aber mein Problem habe nicht 100% aufgelöst, so dass ich bin nur für Tastaturereignis suchen, eigentlich möchte ich Fußzeile über Tastatur zu verbergen, wenn die Tastatur sichtbar ist als es (Fußzeile) erscheinen Die Tastatur, so versuche ich Fußzeile Position relativ zu setzen, wenn die Tastatur sichtbar ist und Fußzeile Position wie behoben, wenn die Tastatur verschwindet. Ich versuchte, wie unten funktioniert es, aber das konnte nicht die 100% ige Auflösung von
mein Problem sein. $ (document) .ready (function() {Wie Tastatur anzeigen/ausblenden Veranstaltung in jquery für mobile Web-Anwendung

$("input").focus(function() { 
$(".copyright_link").css("position","relative"); 

});  

$("input").blur(function() { 

$(".copyright_link").css("position","fixed"); 
});  

});

Kann mir jemand helfen, wie Fußzeile Problem zu lösen oder lassen Sie mich wissen, ob es Tastaturereignis in jquery ist

+0

Richter mit '$ (document.activeElement) .attr ('Typ') === "Text". Erworben http://stackoverflow.com/questions/14902321/how-to-determine-if-a-resize-event-was-triggered-by-soft-keyboard-in-mobile-brow –

Antwort

6

können Sie Ereignis die Größe verwenden zu bekommen, wenn Tastatur erscheint, ist oder nicht

$(document).ready(function(){ 
    var _originalSize = $(window).width() + $(window).height() 
    $(window).resize(function(){ 
    if($(window).width() + $(window).height() != _originalSize){ 
     console.log("keyboard show up"); 
     $(".copyright_link").css("position","relative"); 
    }else{ 
     console.log("keyboard closed"); 
     $(".copyright_link").css("position","fixed"); 
    } 
    }); 
}); 
+0

Dank seiner Arbeit :) –

+1

Es funktioniert nur, wenn ich das Geräteportrait nicht in Querformat oder umgekehrt gedreht habe. weil var _originalSize = $ (window) .width() + $ (window) .height(); unterscheiden sich im Landscap- und Portait-Modus, so dass die unnötige Position der Fußzeile gemäß obigem Code ausgelöst wird. entsprechend jetzt nehme ich an, nur für Tastaturereignis .. zu suchen .. gibt es irgendein ?? –

+0

versuchen Sie etwas wie $ (window) .width() + $ (window) .height() <_originalSize - 50 um das zu vermeiden. Das ist größer als die Lücke zwischen Querformat und Hochformat und kleiner als die Tastaturhöhe. – suish

8
if($(document.activeElement).attr('type') == "text"){ 
    console.log("Keyboard is visible"); 
}else{ 
    console.log("Keyboard is not visible"); 
} 
+6

An Android können Sie die Tastatur ausblenden, indem Sie auf das Dreieck tippen ("Tastaturtaste ausblenden"). Die Eingabe bleibt aktiv. – Lambder

4

Mit jQuery:

var lastWindowWidth = $(window).width(), 
    lastWindowHeight = $(window).height(); 

$(window).resize(function() { 

    var newWindowWidth = $(window).width(), 
     newWindowHeight = $(window).height(); 

    if(newWindowHeight > lastWindowHeight && newWindowWidth == lastWindowWidth) { 

     // Keyboard closed 
     // ... 

    } 

    lastWindowWidth = newWindowWidth; 
    lastWindowHeight = newWindowHeight; 

}); 

Beachten Sie, dass das Fenster resiz Das Ereignis (und somit der Kommentarblock "Tastatur geschlossen") kann mehrmals aufgerufen werden, wenn die Tastatur geschlossen wird. Bearbeiten Sie nach Ihren Bedürfnissen.

0

Hallo hier ist eine der Lösung, die für mich funktionierte, um zu überprüfen, ob die Tastatur in mobilen Geräten aktiv ist.

Im folgenden Code ist "#Email" die ID des Eingabefeldes, das ich verwende.

$(window).resize(function() { //checking for window resize event 

    if($(window).width() < 414){ //checking for window width 
     if($("#Email").is(":focus")){ 
      $('.content').css({'margin-top': -15 + 'px'}); 
      $('.footer').css({'margin-bottom': -100 + 'px'}); 
     } 
    }}); 
0

Die Kugel prof-Lösung, die über Chrome/Safari etc .. arbeitet und sowohl auf Android und iOS als 20-nov-2017 eine Änderung in der Höhe eines div zu erkennen, die eine vh hat height units (Höhe des Darstellungsbereichs)

Dann überprüfen Sie bei jeder Unschärfe/Fokusänderung eines Eingabe-/Textbereichs, ob das div jetzt eine Höhe von 30% weniger (in Pixeln) als vor diesem Blur/Fokus-Ereignis hat.

Siehe den Code hier: Detect virtual keyboard vs. hardware keyboard (es ist nicht erlaubt Paste Code offenbar zu kopieren) Detect virtuelle Tastatur gegen Hardware-Tastatur