it-swarm.com.de

IPhone GO-Schaltfläche zum Senden des Formulars anfordern

Ist jemandem bekannt, welche Variablen in ein Formular eingehen, damit der GO-Button der virtuellen Tastatur des iPhones das Formular oder nicht das Formular sendet?

Ich habe versucht, die Szenarien einzugrenzen, und das habe ich gefunden:

  • wenn FORM nur über ein Benutzereingabefeld verfügt, sendet die Schaltfläche "go" automatisch das Formular

  • wenn FORM über mehr als ein Benutzereingabefeld verfügt, jedoch kein INPUT TYPE = "SUBMIT", wird das Formular nicht mit der Schaltfläche "GO" gesendet.

  • wenn FORM mehr als ein Benutzereingabefeld hat UND ein INPUT TYPE = "SUBMIT" hat, dann sendet die Schaltfläche "Go" das Formular.

Das ist jedoch nicht ganz genau, da wir in eine Situation geraten, in der der Dritte nicht für uns arbeitet. 

Kennt jemand die anderen Faktoren, die in den GO-Button einfließen und nicht funktionieren?

34
DA.

Also hier unser spezifisches Thema:

Wir hatten ein Formular mit mehreren Benutzereingabefeldern, aber keinen echten <input type="submit"> (es wurde über JS gesendet).

Der GO-Button hat also nichts getan.

Wir fügten dann einen <input type="submit"> hinzu und stellten ihn auf display: none, in der Hoffnung, dass dies der Trick wäre. Nee. Funktionierte nicht.

Aus einer Laune heraus haben wir die Anzeige geändert: keine in margin-left: -1000px

Das hat funktioniert!

Anscheinend sucht Safari nach einer SUBMIT-Schaltfläche im Formular und nur, wenn es nicht angezeigt wird: Keine. Wenn Sie die GO-Taste drücken, wird sie ausgelöst.

47
DA.

Wenn es mehr als eine Eingabe gibt und Sie das Senden ausblenden möchten, scheint das Beste:

<input type="submit" style="visibility:hidden;position:absolute"/>
21
Jiri Kopsa

Ich konnte nicht herausfinden, warum ein sehr einfaches Google Maps-Formular nicht mit der iPhone-Go-Schaltfläche gesendet wurde.

Es stellt sich heraus, dass es nach dem Entfernen nicht mit target="_blank" im Form-Tag funktioniert.

Wenn das entfernt wurde, funktioniert die Go-Taste jetzt auf dem iPhone. 

Hier ist ein JSFiddle um es auszuprobieren

2
Nathan Todd

Sie können einen Keypress-Listener auch an das Element oder Formular binden. Die iphone "Go" -Taste ist die gleiche wie die Enter-Taste eines Computers (Zeichen 13). 

$('someElem').bind("keypress", function(e){
    // 'Go' key code is 13
    if (e.which === 13) {
       console.log("user pressed Go");
       // submit your form with explicit JS.
    } 
 });
1
David Merritt

Der von den anderen angegebene Code ist korrekt .. Wenn Sie jQuery Mobile verwenden, fügen Sie hinzu 

data-role="none" 

zum übergebenden Eingabeelement. So wie:

<input type="submit" data-role="none" style="visibility: hidden; position: absolute;" />
1
Jonny Forney

Wenn Sie einfach mein Eingabetyp = "search" in ein Formularkennzeichen einschließen, war der Trick, als ich auf dieses Problem stieß. Hoffentlich hilft es auch anderen, die dieses Problem hatten.

0
Oz Lodriguez

Die GO-Schaltfläche zum Senden ist ein Standardverhalten von iOS. Versuchen Sie nicht, die Tastatur zu hacken, da UIKeyboard ein Laufzeitheader ist. Sie können jedoch JS für Ihr HTML in die Laufzeit einspeisen und das Verhalten der GO-Schaltfläche verhindern (GO verhält sich wie eine Eingabetaste).

Versuche dies,

    WKWebView *webView;  
    WKUserContentController *contentController = [[WKUserContentController alloc] init];

    NSString *script1 = @"var isEnter = false;";
    WKUserScript *userScript1 = [[WKUserScript alloc] initWithSource:script1 injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:false];
    [contentController addUserScript:userScript1];

    NSString *script2 = @"function captureGoKey(e){if(isEnter){e.preventDefault();}isEnter = false;}";
    WKUserScript *userScript2 = [[WKUserScript alloc] initWithSource:script2 injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:false];
    [contentController addUserScript:userScript2];

    NSString *script3 = @"var form = document.getElementsByTagName('form')[0];";
    WKUserScript *userScript3 = [[WKUserScript alloc] initWithSource:script3 injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:false];
    [contentController addUserScript:userScript3];

    NSString *script4 = @"document.onkeypress = function(e){if(e.keyCode == 13){isEnter = true;}}";
    WKUserScript *userScript4 = [[WKUserScript alloc] initWithSource:script4 injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:false];
    [contentController addUserScript:userScript4];

    NSString *script5 = @"if(form.attachEvent){form.attachEvent('submit', captureGoKey);}else{form.addEventListener('submit', captureGoKey);}";
    WKUserScript *userScript5 = [[WKUserScript alloc] initWithSource:script5 injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:false];
    [contentController addUserScript:userScript5];

    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
    config.userContentController = contentController;

    webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:config];
0
Sachintha Udara

Hier ist der Submit-Button-Stil, der für mich funktioniert hat, mit minimalen Nebenwirkungen auf der Seite:

.... style="width: 0px ; height: 0px" ....
0
Bitonator