1

如果达到最小/最大值,我需要一个微调器溢出,我可以这样做 -

$('.inline-spinner').spinner({
    page: 10,
    spin: function(event, ui){
        if(ui.value > 99){
            $(this).spinner('value', 0);
            return false;
        } else if (ui.value < 0){
            $(this).spinner('value', 99);
            return false;
        }
    }
});

但是,如果我扩展微调器以便将px后缀添加到输入中,则spin每当我尝试超出其中一个边界值时,附加到的函数都会产生错误(但其他情况下工作正常) -

无法在初始化之前调用微调器上的方法;试图调用方法“值”。

有人可以告诉我为什么会发生这个错误,以及如何解决它?

这是我扩展微调器的方式(我也尝试删除options并将它们包含在$('.inline-spinner').inlineSpinner();调用中,但这也产生了错误) -

$.widget('ui.inlineSpinner', $.ui.spinner, {
    options: {
        page: 10,
        spin: function(event, ui){
            if(ui.value > 99){
                $(this).spinner("value", 0);
                return false;
            } else if (ui.value < 0){
                $(this).spinner("value", 99);
                return false;
            }
        }
    }
    _format: function(value) { return value + 'px'; },
    _parse: function(value) { return parseInt(value); }
});
$('.inline-spinner').inlineSpinner();
4

1 回答 1

0

Literally as I posted this question the answer dawned on me...

I'm extending spinner (and calling it inlineSpinner), yet I was calling the method 'value' on spinner. I changed the offending calls and everything is now working fine.

$.widget('ui.inlineSpinner', $.ui.spinner, {
    options: {
        page: 10,
        spin: function(event, ui){
            if(ui.value > 99){
                $(this).inlineSpinner("value", 0); // Changed this line
                return false;
            } else if (ui.value < 0){
                $(this).inlineSpinner("value", 99); // Changed this line
                return false;
            }
        }
    },
    _format: function(value) { return value + 'px'; },
    _parse: function(value) { return parseInt(value); }
});
$('.inline-spinner').inlineSpinner();
于 2013-10-31T11:39:00.047 回答