iPhone Mobile Safari: Force keyboard open
This is an HTML / CSS / JS (jQuery) iPad app. I've got a button, that slides down an input form. I'd like to focus the user on the input, and then launch the keyboard.
Th开发者_开发百科is is what I'm working with, but doesn't work:
$('#myFormField').focus();
This does indeed focus the input, but fails to launch the keyboard. Is it just not possible (for security reasons or whatever)?
Is there a way to force or simulate a user tapping the input (or anything for that matter)?
Maybe these links can help you:
http://4pcbr.com/topic/how_to_open_keyboard_on_ipad_with_js(not working anymore)http://jgestures.codeplex.com
Try this
Tested on Safari iPhone 7 & iPhone 6 Plus, Android 4.4
and it opened iOS virtual keyboard successfully when I touched the button.
condition
1) make a Button to trigger keypress event => $('.btn_abc')
2) make a text input tag, and set the ID to this element => $('#search_input')
$( document ).ready(function() {
var focusTextField = function(){
console.log("focusElement");
};
var onKeypressHandler = function(){
console.log("* * * keypress event handler")
$('#search_input').blur().focus();
};
var onClickHandler = function() {
$('.btn_abc').trigger('keypress');
};
$('#search_input').bind('focus', focusTextField);
$('.btn_abc').bind('click', onClickHandler);
$('.btn_abc').bind('keypress', onKeypressHandler);
});
Turn that button into an input field then instantly swap focus to the main input field. They keyboard will open and stay opened. Below is an example using a button like you asked, placing a transparent input field over the button the user clicks. Tested on an iPhone 4 (iOS 6/7) and an HTC Windows phone.
The input you want the user to focus on:
<input id="main" />
The button the user presses (with input field overlayed using css):
<a>Button</a><input onfocus="FocusMain()" />
Swap focus instantly:
function FocusMain()
{
$("#main").focus();
}
This should do what you want:
$("#element").focus().click();
Try:
$('#element').blur().focus();
or if that does not work:
$('#element').focus().blur().focus();
blur() eliminates the focus and focus() brings it back. For some reason, it works every time compared to focus() working once in a while on its own.
精彩评论