【问题标题】:Knockout .js with jQuery UI slider带有 jQ​​uery UI 滑块的 Knockout .js
【发布时间】:2012-10-18 17:56:57
【问题描述】:

假设我有以下链接到文本框的 jQuery UI 滑块。

是否可以允许用户在文本框中输入大于滑块值的值(并将滑块设置为最大值)?

ko.bindingHandlers.slider = {
init: function (element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().sliderOptions || {};
$(element).slider(options);
ko.utils.registerEventHandler(element, "slidechange", function (event, ui) {
    var observable = valueAccessor();
    observable(ui.value);
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
    $(element).slider("destroy");
});
ko.utils.registerEventHandler(element, "slide", function (event, ui) {
    var observable = valueAccessor();
    observable(ui.value);
});
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
if (isNaN(value)) value = 0;
$(element).slider("value", value);
}
};

在此示例中:http://jsfiddle.net/jearles/Dt7Ka/12/ 我希望能够在文本框中保存超过 100 的值,并使滑块显示在其最大值处。

【问题讨论】:

    标签: jquery-ui knockout.js


    【解决方案1】:

    如果 observable 的值小于 options.max,您可以只更新 slidechange 事件中的 observable 值:

    ko.utils.registerEventHandler(element, "slidechange", function (event, ui) {
        var observable = valueAccessor();
        var currentMax = $(element).slider("option", "max"); 
        if (observable() <= currentMax)
             observable(ui.value);
    });
    

    JSFiddle demo.

    【讨论】:

    • 最好使用 options.max 而不是 100。
    • var currentMax = $(element).slider("option", "max"); if (observable()
    • @woggles 感谢您的评论,硬编码 100 是一个快速的解决方案。我已经更新了我的答案:)
    【解决方案2】:

    将这一行放在以下行之后:if (isNaN(value)) value = 0; 在绑定更新函数处

    if(value>100){
        $(element).slider("option","max",value);          
    }
    

    例子:

    http://jsfiddle.net/Razaz/Qy6jR/4/

    如果值大于 100,它将滑块的最大值更改为在文本框中输入的新值

    您好。

    【讨论】:

    • 感谢您的回答,但这并不完全符合我的要求 - 我希望范围保持不变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2017-05-31
    • 2011-05-08
    相关资源
    最近更新 更多