2012-08-31 3 views
2

Я хочу установить фокус на текстовое поле id, скажем, txtName после прокрутки до верхней части страницы с помощью div.focus и animate().Как установить Фокус после анимации

Есть ли функция, которая указывает на фокусировку после анимации, как document.ready будет работать после document.ready?

Код, который я использовал для прокрутки, приведен ниже.

$(".gototop").click(function(){ 
    var focusElement = $("#contents"); 
    $(focusElement).focus(); 
    ScrollToTop(focusElement); 
}); 

function ScrollToTop(el) { 
    $('html, body').animate({ scrollTop: $(el).offset().top - 50 }, 'slow');   
} 

ответ

9

Вы можете установить фокус на элемент в обратном вызове анимировать, в этом пути он получит фокус, когда анимация завершен:

function ScrollToTop(el) { 
    $('html, body').animate({ 
     scrollTop: $(el).offset().top - 50 }, 
    'slow', function() { 
     $("#txtName").focus(); 
    });   
} 

и если el это элемент, который вы хотите, чтобы сосредоточиться, вы можете используйте переданную переменную вместо #txtName

+0

Вы избили меня до этого. @Archie Dave, см. Документы jQuery для анимации, где «полный» параметр - это функция для вызова, когда анимация завершена. http://api.jquery.com/animate/ – devlord

2

Функция animate принимает обратный вызов, который будет выполнен после завершения анимации. Вы можете сделать что-то вроде этого:

$(".gototop").click(function(){ 
    var focusElement = $("#contents"); 
    ScrollToTop(focusElement, function() { focusElement.focus(); }); 
}); 

function ScrollToTop(el, callback) { 
    $('html, body').animate({ scrollTop: $(el).offset().top - 50 }, 'slow', callback); 
} 
Смежные вопросы