2015-01-30 2 views
0

Недавно мы начали получать некоторые жалобы на то, что кнопка на странице перестала работать под ipad - ios8, выполняя немного тестирования, мы обнаружили, что код при включении кнопки и настройке focus(), если бы у нас был фокус в другом месте, кнопка никогда не получала бы фокус, а худшая она не реагировала на щелчок.iOS 8 JQuery Submit Button Focus Bug

Ниже представлен скрипач, который имитирует эту проблему, сначала выберите текстовое поле, чтобы установить фокус на нем, затем нажмите кнопку P1 и попробуйте нажать кнопку «Сделать что-то».

Fiddler Here

$("#some_submit_button").prop("disabled",true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
 
<input type="button" id="P1" value="P1" onclick="P1Click()" /> 
 

 
<input type="text" id="textP" /> 
 
    
 
<p>&nbsp;</p> 
 
<input type="submit" id="some_submit_button" value="Do Something" onclick="Submit()" /> 
 

 
<script> 
 
function P1Click() { 
 
    $("#P1").prop("disabled",true); 
 
    $("#some_submit_button").prop("disabled",false); 
 
    $("#some_submit_button").focus(); 
 
} 
 
function Submit(){ 
 
    alert('Submited the form'); 
 
} 
 
</script>

ли кто-нибудь еще столкнулся с этой ошибки? Есть ли обходной путь для этого?

С наилучшими пожеланиями

+0

То же здесь ... :( –

ответ

0

Такая же проблема here.

Обход проблемы:
Не устанавливайте фокус на iPad, iPod, iPhone (в основном люди не используют аппаратные клавиатуры на этих устройствах для навигации).

if((!navigator.userAgent.match(/iPhone/i)) && (!navigator.userAgent.match(/iPod/i)) && (!navigator.userAgent.match(/iPad/i))) { 
    $("#some_submit_button").focus(); 
} else { 
    // hide keyboard on mobile 
    $("#textP").blur(); 
} 
0

Пошел через эту же проблему сегодня. При отображении диалогового окна я уделяю внимание первому фокусируемому элементу внутри диалогового окна для доступности клавиатуры. В этом случае первым элементом была кнопка <input type="submit">, а Safari на iOS не позволяло пользователям нажимать кнопку.

Мне удалось обойти его, используя <button type="submit"> вместо <input type="submit">.

Лично я предпочитаю, чтобы браузер обнюхивал. Кроме того, он сохраняет возможности доступа к клавиатуре.

Проблема может быть проверена здесь: http://codepen.io/dapenguin/full/rOoaqv