我在基于dojo的应用程序中使用了dijit.form.NumberSpinner
小部件,所有这些部件都已连接到onChange
操作。
当一个人的区域中有许多NumberSpinner
时,就会出现问题:用户在页面上滚动并在整个区域中用鼠标滚轮滚动时,意外地在NumberSpinner
字段中填充了意外的值。
是否可以通过某种方式禁用dijit.form.NumberSpinner
小部件上的鼠标滚轮事件?
最佳答案
如果您从不需要它,并且可以访问dojo源代码并且能够进行自己的构建,请在dijit/form/_Spinner.js上注释此行:
postCreate: function(){
// [...]
// this.connect(this.domNode, !has("mozilla") ? "onmousewheel" : 'DOMMouseScroll', "_mouseWheeled");
// [...]
}
另外,您可以在窗口小部件上将intermediateChanges属性设置为true,然后执行以下操作:
在您的html中:
<input id="spinner1" name="someNumber" data-dojo-type="dijit.form.NumberSpinner" data-dojo-props="value:'1000',smallDelta:'10',constraints:{min:9,max:1550,places:0}, intermediateChanges:'true'"/>
在您的JavaScript块中:
dojo.ready(function(){
var spinner = dijit.byId("spinner1");
var currentValue = spinner.get('value');
dojo.connect(spinner, "onChange", function(value){
currentValue = value;
});
dojo.connect(spinner.domNode, (!dojo.isMozilla ? "onmousewheel" : "DOMMouseScroll"), function(e){
spinner.set('value',currentValue);
});
});
关于javascript - 如何禁用dijit.form.NumberSpinner小部件上的鼠标滚轮事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8212097/