Атрибут автофокуса HTML5 не работает только в FireFox, когда <Form><input> загружаются через Ajax.ЗАЧЕМ? - PullRequest
6 голосов
/ 31 марта 2012

Ниже приведена форма, которую я загрузил через ajax. Когда я запускаю страницу формы напрямую, автофокус на c_name работает в firefox, но при загрузке с помощью ajax - нет! Он работает нормально с Opera / Safari / Chrome, хотя!

<form action="client_entry_action.php" method="post" id="client_entry_form" name="client_entry_form">

<fieldset id="client_info_1">

    <label for="c_name">Name:</label> 
    <input type="text" name="c_name" required placeholder="Name" autofocus="autofocus" />

    <label for="c_phone">Phone Number:</label> 
    <input type="tel" name="c_phone" required placeholder="Mobile/Phone Number" />

    <label for="c_email">Email:</label> 
    <input type="email" name="c_email" required placeholder="email@example.com" />

    <label for="c_address">Address:</label> 
    <textarea name="c_address" ></textarea>


</fieldset>

<fieldset id="client_info_2">   

    <label for="c_info">Additional notes:</label> 
    <textarea name="c_info" ></textarea>

    <input type="submit" name="add_client" value="Add Client" />

</fieldset>        

</form>

Ответы [ 4 ]

6 голосов
/ 31 марта 2012

Автофокусировка выполняется только до срабатывания нагрузки; он предназначен для декларативного определения фокуса при начальной загрузке страницы.

5 голосов
/ 24 июля 2014

использовать settimeout после вызова ajax на div, или с помощью jquery использовать .ajaxComplete или .done

function theAjax(){
//after the ajax actions loaded......
//use settimeout to refocused on the input..
var t=setTimeout("focusMe()",500);

}

function focusMe(){
document.getELementById("theInput").focus();  //the new input

}

//using jquery use .ajaxComplete, or .done
 $( document ).ajaxComplete(function() {
   $("#focusOnMe").focus();
 }
2 голосов
/ 21 октября 2013

Я знаю, что это старо, но у меня была эта проблема, и, возможно, она кому-то помогает.

Если вы используете jQuery, это работает:

$("input[name='c_name']").focus();

Javascript будет выглядеть примерно так (общий пример):

document.getElementById('element').focus();

Но вы должны вызывать эту функцию после загрузки формы через ajax!

0 голосов
/ 01 ноября 2012

У меня абсолютно та же проблема: атрибут автофокуса не работает в FF, по крайней мере, в последней версии. У меня также есть всплывающее окно с формой. Ajax используется для этой всплывающей инициации.

Надеюсь, эти ссылки будут вам полезны:

Обсуждение на webmasters.stackexchange.com

Еще одно обсуждение стека overflow

Но я не нашел более простого и красивого решения, кроме как с помощью взломов javascript.

...