假设我有以下链接到文本框的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的值,并使滑块显示为其最大值。
答案 0 :(得分:3)
如果observable的值小于slidechange
,则只能更新options.max
事件中的可观察值:
ko.utils.registerEventHandler(element, "slidechange", function (event, ui) {
var observable = valueAccessor();
var currentMax = $(element).slider("option", "max");
if (observable() <= currentMax)
observable(ui.value);
});
答案 1 :(得分:0)
将这一行放在以下行之后: if(isNaN(value))value = 0; 在绑定更新函数
if(value>100){
$(element).slider("option","max",value);
}
示例:
http://jsfiddle.net/Razaz/Qy6jR/4/
如果值大于100,它会将滑块的最大值更改为在文本框中输入的新值
问候。