Я был в состоянии заставить .focus () работать, привязав его к двум отдельным событиям на карте событий, но это отчасти хакерски.
После добавления FastClick.js, это то, что происходит в iOS: .focus () работает только тогда, когда он активируется функцией, прикрепленной к событию. НО фокус также является событием в карте событий мобильного сафари, которое фактически вызывается, когда вы используете jfuery .focus (). Таким образом, вы можете быть лишним и прикрепить еще один .focus () к событию focus объекта, чтобы убедиться, что он проходит. Это особенно хорошо работает, когда вы создаете вход в DOM. В последнее время мне нравится программировать для MeteorJS, вот как выглядит решение:
Template.templateName.events({
"click button":function(){
Session.set("makeButtonVisible",true);
$("input.created").focus();
},
"focus input.created":function(){
$("input.created").focus();
}
});
Надеюсь, это кому-нибудь пригодится, мне понадобилось около двух часов, чтобы понять это.
EDIT:
Ну, в частности, для MeteorJS вы не можете использовать функцию Template.templateName.rendered, потому что .focus () должен вызываться из события. НО по какой-то причине, когда вы добавляете вход через jQuery, вы можете сосредоточиться на нем внутри события. Думаю, это путь. Вот что я в итоге сделал:
Template.templateName.events({
"click button":function(){
$("body").append("<input class='created' type='tel'>");
$("input.created").focus();
}
});