-
-
Save pererinha/aaef044b021bbf7372e5 to your computer and use it in GitHub Desktop.
directive( 'ignoreMouseWheel', function( $rootScope ) { | |
return { | |
restrict: 'A', | |
link: function( scope, element, attrs ){ | |
element.bind('mousewheel', function ( event ) { | |
element.blur(); | |
} ); | |
} | |
} | |
} ); | |
// <input type="number" ignore-mouse-wheel ... > |
Thank you! Had to use element[0].blur();
@stianlp: same here
thank you!!!!!
Great little directive; I also had to implement the replacement by @stianlp of element.blur()
with element[0].blur()
; My final directive look like this:
(function() {
'use strict';
/**
* @ngdoc directive
* @name
* @description
*/
angular.module('managerApp')
.directive('ignoreMouseWheel', function () {
return {
restrict: 'A',
link: function (scope, element) {
element.bind('mousewheel', function() {
element[0].blur();
});
}
};
});
}());
I added a bit to not lose focus on the input:
directive('ignoreMouseWheel', function ($rootScope, $timeout) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.bind('mousewheel', function (event) {
element.blur();
$timeout(function () {
element.focus();
}, 10);
});
}
}
});
Basically following a comment on this SO comment: http://stackoverflow.com/questions/9712295/disable-scrolling-on-input-type-number
If you want to maintain normal scroll behavior and prevent focus-blur odd blink effects, you can use:
directive('ignoreMouseWheel', function ($document) {
return {
restrict: 'A',
link: function (scope, element) {
element.bind('mousewheel', function (event) {
var scrollAmount = event.originalEvent.wheelDelta * -1 + $document.scrollTop();
event.preventDefault();
$document.scrollTop(scrollAmount);
});
}
}
});
It is an angular implementation of http://codepen.io/pixelthing/pen/LIqsg
thx!
Big thanks @carmelc....:)
@carmelc Thanks for that update, but I was wondering if you or anyone else were able to tweak it so it doesn't skip up the page when scrolling over a field. Trying to figure out if the blink or the jump is worse.
Great resources all together though. Really sad there isn't something built into the html for this since it can get really annoying.
I was going to say I opted for the blink, but that also has the side affect of changing what field is focused.
For me it was element.bind('wheel', ...
and element[0]
The wheel
event is compatible with both Chrome and Firefox. In Firefox, mousewheel
does not work. See also here.
Thank You!