3

如果 dijit.form.NumberSpinner 小部件中的值增加或减少,是否有任何方法可以捕获事件?

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

4

1 回答 1

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/

于 2012-05-22T15:21:39.033 回答