jQuery ui spinner - 使用时间(小时)

时间:2013-10-23 18:54:17

标签: jquery html jquery-ui time spinner

使用jQuery 1.9.1& jQuery-ui 1.10.3。想要使用微调器进行一段时间(小时)控制。除了有一组有限的值之外,我希望它一旦超过23就将它翻到0。我有那部分工作。我遇到的问题是什么时候开始。

我用于微调器的代码:

$(function() {
    $("#mystarttime").spinner({
        numberFormat: "d2",
        spin: function(event, ui) {
            if (ui.value > 23) {
                $(this).spinner("value", 0);
                return false;
                    }
            else if (ui.value < 0) {
                $(this).spinner("value", 23);
                return false;
                    }
            console.log("start spin - " + ui.value );
            }
        });
});

输入:

<label for="mystarttime">Start Time (hr):</label>
<input type="text" id="mystarttime" name="startTimeVal">

当页面加载时,微调器中没有任何内容。如果我单击微调器上的向上箭头(以递增),spin事件将触发&amp;我在控制台中收到一条消息,显示值(1)。但是,如果我单击微调器上的向下箭头,spin事件不会触发,但我在输入框中得到23。直到我再次单击向下箭头,spin事件才会触发,输入(和控制台)都显示22.

如果我单击向下箭头一次,输入框将显示23(但没有事件触发)。 之后,如果我单击向上箭头一次,输入显示00(但没有事件触发)。

我必须做错事或查看错误的事件以检测翻滚和放大改变,但没有找到一个好的例子,两个翻身并看到事件。非常感谢有关如何解决此问题的任何想法或建议。

1 个答案:

答案 0 :(得分:1)

自己设置值时,不会调用

spin:。但change:被调用 - 这应该可以解决问题:

function log(value) {
 console.log(value);
}

$(function() {
    $("#mystarttime").spinner({
        numberFormat: "d2",
        spin: function(event, ui) {
            if (ui.value > 23) {
                $(this).spinner("value", 0);
                return false;
                    }
            else if (ui.value < 0) {
                $(this).spinner("value", 23);
                return false;
                    }
            log(ui.value);
        },
        change: function(event, ui) {
            log($(this).spinner("value"));
        }
        });

});