Получение кнопки iPhone GO для отправки формы
Кто-нибудь знает, какие переменные входят в форму, чтобы заставить виртуальную клавиатуру iPhones GO-кнопку отправить форму против не?
Я пытался сузить сценарии, и вот что я нашел:
-
если FORM имеет только одно поле ввода пользователя, кнопка go автоматически отправляет форму
-
если FORM имеет более одного поля ввода пользователя, но не INPUT TYPE="SUBMIT", тогда кнопка GO не отправляет форму.
-
если FORM имеет более одного поля ввода пользователя И имеет INPUT TYPE="SUBMIT", тогда кнопка go передает форму.
Однако, что не совсем точно, поскольку мы сталкиваемся с ситуацией, третий не работает для нас.
Кто-нибудь знает о других факторах, которые входят в кнопку GO, работающей против работы?
Ответы
Ответ 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];