Подтвердить что ты не робот

Получение кнопки iPhone GO для отправки формы

Кто-нибудь знает, какие переменные входят в форму, чтобы заставить виртуальную клавиатуру iPhones GO-кнопку отправить форму против не?

Я пытался сузить сценарии, и вот что я нашел:

  • если FORM имеет только одно поле ввода пользователя, кнопка go автоматически отправляет форму

  • если FORM имеет более одного поля ввода пользователя, но не INPUT TYPE="SUBMIT", тогда кнопка GO не отправляет форму.

  • если FORM имеет более одного поля ввода пользователя И имеет INPUT TYPE="SUBMIT", тогда кнопка go передает форму.

Однако, что не совсем точно, поскольку мы сталкиваемся с ситуацией, третий не работает для нас.

Кто-нибудь знает о других факторах, которые входят в кнопку GO, работающей против работы?

4b9b3361

Ответ 1

Итак, вот наша особая проблема:

У нас была форма с несколькими полями ввода пользователя, но не истина <input type="submit"> (она отправлялась через JS).

Таким образом, кнопка GO ничего не сделала.

Затем мы добавили <input type="submit"> и установили его в display: none, надеясь, что это сделает трюк. Неа. Не работает.

По прихоти мы изменили отображение: none на margin-left: -1000px

Это сработало!

По-видимому, Safari ищет наличие кнопки SUBMIT в форме и только если она не отображается: none, она будет запускаться, когда вы нажмете кнопку GO.

Ответ 2

Если имеется более одного входа, и вы хотите скрыть отправку, лучше всего выглядит:

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

Ответ 3

Вы также можете привязать прослушиватель клавиатуры к элементу или форме. Кнопка "Go" для iphone аналогична кнопке ввода на компьютере, char 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.
    } 
 });

Ответ 4

Я не мог понять, почему очень простая форма карт Google не отправлялась с помощью кнопки iPhone Go.

Выключается, после удаления его, он не работает с target="_blank" в теге формы.

Удалено, и теперь кнопка Go работает на iPhone.

Здесь JSFiddle, чтобы попробовать

Ответ 5

Код, данный другими, является правильным. Если вы используете jQuery Mobile, добавьте

data-role="none" 

отправить элемент ввода. Вот так:

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

Ответ 6

Просто включение моего типа ввода = 'поиск' в теге формы сделал трюк, когда я столкнулся с этой проблемой. Надеюсь, это могло бы помочь другим, у кого была эта проблема.

Ответ 7

Здесь стиль кнопки отправки, который работал у меня, с минимальными побочными эффектами на странице:

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

Ответ 8

Кнопка GO для отправки является поведением iOS по умолчанию, и не пытайтесь взломать клавиатуру, потому что UIKeyboard является заголовком среды выполнения, однако вы можете внедрить JS для вашего html во время выполнения и предотвратить поведение кнопки GO (GO действует как клавиша Enter),

Попробуйте это,

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