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

10-11 00:54