2016-07-23 14 views
1

누군가 폼의 입력 필드를 통해 언제든지 페이지를 위아래로 스크롤하려고합니다. 사용자가 탭을 통과 할 때 현재 포커스가있는 입력 요소가 페이지 중앙에 세로로 가운데에 배치되기를 원합니다. 나는 이것에 대한 지시문을 썼지 만, 기대했던 것처럼 작동하지 않습니다. , 또한, 사용 elem.prop (....)입력 필드의 초점이 중간에 페이지를 스크롤하는 방법

+0

당신이 정교한 시겠어요 * 아무튼 ' –

답변

0
var app = angular.module('plunker', []); 
app.controller('MainCtrl', function($scope) { 
    $scope.name = 'World'; 
}); 

app.directive('formScroll', formScroll); 
    function formScroll($window) { 
     return { 
     link: function(scope, elem) { 
       elem.bind('focus', function() { 
        var offset, 
       elOffset = elem.prop('offsetTop'), //.offset().top, 
       elHeight = elem.prop('height'), //elem.height(), 
       windowHeight = $window.innerHeight; 
       offset = elOffset - ((windowHeight - elHeight)/2); 
       $window.scrollTo(0, offset); 
       }); 
     } 
     } 
    } 

angular 
    .module('app') 
    .directive('formScroll', formScroll); 

function formScroll($window) { 

     function link(scope, elem) { 
      elem.bind('focus', function() { 
       var offset, 
        elOffset = elem.offset().top, 
        elHeight = elem.height(), 
        windowHeight = $window.innerHeight; 

       offset = elOffset - ((windowHeight - elHeight)/2); 

       $window.scrollTo(0, offset); 
      }); 
     } 
    } 
나는 객체 {... 링크}를 반환하는 formScroll 기능을 수정 내가 기대하는 것처럼 일하지 않습니까?
관련 문제