Getting iPhone GO button to submit form

前端 未结 9 1823
轻奢々
轻奢々 2020-12-05 02:08

Is anyone aware of what variables go into a form to make the iPhones virtual keyboard\'s GO button submit the form vs. not?

I\'ve been trying to narrow down the scen

9条回答
  •  孤街浪徒
    2020-12-05 02:43

    GO button to submit is a default behaviour of iOS and don`t try to hack the keyboard because UIKeyboard is runtime header, however you can inject JS for your html in runtime and prevent GO button behaviour (GO acts like a Enter key),

    Try this,

        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];
    

提交回复
热议问题