Skip to main content

setFocusTimeout

Sometimes you want to give input.focus after a certain amount of delay. However, in Mobile Safari, if you do input.focus inside an async function (which is executed using Task Queue), focus doesn't work properly. This is a Hacky function that solves this problem. Ref: https://stackoverflow.com/questions/12204571/mobile-safari-javascript-focus-method-on-inputfield-only-works-with-click

function setFocusTimeout(
// A callback containing the focus logic to be executed asynchronously
executeFocus: () => void,
// How long to delay before executing focus (in ms)
delay: number
): Promise<boolean>;

Example

setFocusTimeout(() => {
input$.focus();
}, 3000);