我在基于 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 block 中:
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/