2014-01-22 10 views
1

Я пытаюсь создать scrollTo() на веб-странице, и я хочу, чтобы кнопка запускала scrollTo(); он выделит верхнюю часть формы и выделит первое поле ввода.jquery scroll to form input

Мой текущий код работает, однако экран быстро мигает. Я попытался использовать preventDefault() безрезультатно. См. Мой код ниже.

$(document).ready(function() { 
    $("#get-started").click(function (e) { 
     e.preventDefault(); 
     $('html, body').animate({ 
      scrollTop: $("#get-risk").offset().top 
     }, 2000); 
     $("#get-started-apply-now-form [name='last_name']").focus(); 
    }); 
}); 
+0

вместо использования '.animate()', вы могли бы просто использовать '.scrollTo()'? http://flesler.com/jquery/scrollTo/ – ntgCleaner

ответ

6

При фокусировке элемента браузер просматривает этот элемент, испортив вашу анимацию.

Поместите фокус в обратном вызове анимации, чтобы избежать его.

$(document).ready(function() { 
    $("#get-started").click(function (e) { 
     e.preventDefault(); 
     $('html, body').animate({ 
      scrollTop: $("#get-risk").offset().top 
     }, 2000, function() { 
      $("#get-started-apply-now-form [name='last_name']").focus(); 
     }); 
    }); 
}); 
+0

спасибо adeneo! поставив фокус в обратном вызове анимации, он отлично работает! –