[英]I'm trying to make the form submit button be disabled when the user clicks out of the input field
[英]Make Button Disabled when the user clicks on the button and reaches at the Bottom or Top
我遇到一個類似的問題,當用戶單擊“移動頂部”和“移動底部”按鈕並基於一些像素滾動到相應方向時,以及當他停頓按鈕的頂部或底部時,我需要禁用按鈕,禁用按鈕。
您可以在此處演示小提琴演示
$scope.scrollBtns = {
downDisabled: true,
upDisabled: false
};
$scope.scrollLogTable = function(topBottom) {
var scroll_clipper = document.getElementById('scroll_clipper');
var scrollBy = scroll_clipper.offsetHeight / 2;
console.log("===========" + topBottom + "====================");
if (topBottom === 'top') {
console.log(scroll_clipper.offsetHeight)
console.log(scroll_clipper.scrollTop, scrollBy)
$scope.scrollBtns.upDisabled = false;
var old = scroll_clipper.scrollTop;
scroll_clipper.scrollTop = scroll_clipper.scrollTop - scrollBy;
if (scroll_clipper.scrollTop == 0) {
// we still have some scrolling to do...
$scope.scrollBtns.downDisabled = false;
} else {
if (scroll_clipper.scrollTop < old) {
// we have reached rock top
//console.log('scroll_clipper.scrollTop < old if', scroll_clipper.scrollTop < old);
$scope.scrollBtns.downDisabled = true;
} else {
//console.log('scroll_clipper.scrollTop < old else', scroll_clipper.scrollTop < old);
$scope.scrollBtns.downDisabled = false;
}
}
} else {
$scope.scrollBtns.downDisabled = false;
var old = scroll_clipper.scrollTop;
scroll_clipper.scrollTop = scroll_clipper.scrollTop + scrollBy;
if (scroll_clipper.scrollTop > scrollBy) {
console.log("we still have some scrolling to do...");
$scope.scrollBtns.upDisabled = true;
} else {
console.log('scroll_clipper.scrollTop > scrollBy', scroll_clipper.scrollTop > scrollBy)
console.log("we have reached rock bottom");
$scope.scrollBtns.upDisabled = false;
}
}
}
當到達底部或頂部時,禁用“頂部移動”和“底部移動”的邏輯沒有發生
請問有人可以幫助我。
注意:
謝謝
有角度的方法是創建一個指令來控制此行為,並在滾動容器時調用一個方法。
angular.module('app').directive('watchScroll', function () {
return {
restrict: 'A',
scope: {
onTop: '&',
onBottom: '&'
},
link: function (scope, elements, attrs) {
var container = angular.element(elements[0]);
var onScroll = function () {
var scrollY = elements[0].scrollTop;
var maxScrollY = elements[0].scrollHeight - elements[0].offsetHeight;
if (scrollY <= 0) {
scope.onTop();
}
if (scrollY >= maxScrollY) {
scope.onBottom();
}
};
container.on('scroll', onScroll);
scope.$on('$destroy', function () {
container.off('scroll', onScroll);
});
}
};
});
然后在您的元素上使用此指令。
<div watch-scroll on-top="callYourFunction()" on-bottom="callYourFunction()"></div>
快速骯臟的小提琴: http : //jsfiddle.net/c6uxhy08/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.