javascript - 如何禁用 dijit.form.NumberSpinner 小部件上的鼠标滚轮事件?

标签 javascript events dojo dom-events mousewheel

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

相关文章:

javascript - docker 中出错(找不到我导出的模块),运行 npm start 时不是问题

javascript - 使用 jQuery 编辑innerHTML()

dom - Safari 扩展 beforeload 事件文档

javascript - Dojo 增强网格 : how to get selected column?

javascript - 基于 ItemFileReadStore 和基于父模型的 Dojo Tree

javascript - 谷歌图表 : How to auto re-size inside panel?

javascript - 我怎样才能修复这个 jQuery 故障,使 div 在使用 .hover() 时不会试图消失?

forms - 使用 Dojo 富文本编辑器提交表单

JavaScript/浏览器 : when does event dispatching exactly happen?

android 添加日历事件在 android 4.0 中崩溃