递增/递减dijit.form.NumberSpinner的事件

时间:2012-05-22 13:15:05

标签: dojo dijit.form

如果dijit.form.NumberSpinner小部件中的值增加或减少,有没有办法捕获事件?

我打算做的是当值低于0时,将NumberSpinner小部件中的文本设置为“从不”,当用户从“从不”增加时,它应该再次设置为0。

1 个答案:

答案 0 :(得分:3)

dojo.declare("MySpinner", [Spinner], {

    zeroValue: 'Never',

    adjust: function(/*Object*/ val, /*Number*/ delta){
        arguments[0] = val && val > 0 ? val : 0;
        return this.inherited(arguments);
    },

    _getValueAttr: function() {
      var v = this.inherited(arguments);
      return (!v || v <= 0) ? 0 : v;
    },

    format: function(/*Number*/ value, /*dojo.number.__FormatOptions*/ constraints){
      var v = this.inherited(arguments);
      if (v <= 0 || !v) 
         return this.zeroValue;

      return v;
    },

    isValid: function(/*Boolean*/ isFocused){
        var v = this.get('value');
        if (!v) {
            return true;
        }           
        return this.inherited(arguments);
    }
});  

这是工作示例

http://jsfiddle.net/cswing/zDVep/