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

pro*_*mus 5 javascript events dojo mousewheel dom-events

我在dijit.form.NumberSpinner基于dojo的应用程序中使用了一些wigets,所有这些都与onChange操作相关联.

当一个区域有大量NumberSpinners 时,会出现问题:用户在页面上NumberSpinner滚动,并在整个区域滚动鼠标滚轮时意外填充具有非预期值的字段.

是否有可能在dijit.form.NumberSpinnerwigets 上禁用鼠标滚轮事件?

Phi*_*ppe 6

如果您从不需要它,并且您可以访问dojo源并且能够自己构建,请在dijit/form/_Spinner.js上注释这一行:

postCreate: function(){
    // [...]
    // this.connect(this.domNode, !has("mozilla") ? "onmousewheel" : 'DOMMouseScroll', "_mouseWheeled");
    // [...]
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以在窗口小部件上将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'"/>
Run Code Online (Sandbox Code Playgroud)

在你的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);
    });

});
Run Code Online (Sandbox Code Playgroud)