javascript - 如何使用微调器输入强制 valueUpdate (knockoutJS)

标签 javascript jquery jquery-ui knockout.js spinner

我有一个带有以下 HTML 的微调器:

<input id="infoX"  data-bind="spinner: infoXpos, spinnerOptions: { min: -50, max: 50 }, valueUpdate: ['propertychange','input']"  />

但是,在我改变焦点之前, valueUpdate 似乎不起作用。 是否有其他方法可以强制更新,以便每次点击微调器按钮时,“infoXpos”都会更新?

下面是我的绑定(bind)处理程序:

    ko.bindingHandlers.spinner = {
    init: function (element, valueAccessor, allBindingsAccessor) {
        //initialize datepicker with some optional options
        var options = allBindingsAccessor().spinnerOptions || {};

        //handle the field changing
        ko.utils.registerEventHandler(element, "spinchange", function () {
            var observable = valueAccessor();
            observable($(element).spinner("value"));
        });

        //handle disposal (if KO removes by the template binding)
        ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
            $(element).spinner("destroy");
        });

        $(element).spinner(options);
    },
    update: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor()),
            current = $(element).spinner("value");

        if (value !== current) {
            $(element).spinner("value", value);
        }
    }
};

最佳答案

看来仅仅发布到 SO 对我的问题解决有很大的影响。 ;)

解决办法非常简单。我更改了事件处理程序以响应“spinstop”而不是“spin change”。

ko.utils.registerEventHandler(element, "spinstop", function () {
        var observable = valueAccessor();
        observable($(element).spinner("value"));
    });

成功了。

在这里摆弄:http://jsfiddle.net/AsleG/m6ztnqxc/

关于javascript - 如何使用微调器输入强制 valueUpdate (knockoutJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28581931/

相关文章:

php - 是否可以将信息放入可放置的 div 中并将其存储在数据库中

javascript - templateURL 的 AngularJS 问题

JavaScript:时刻 diff 函数给出不正确的天数差异

javascript - 动态更改文本,如何不删除 <i> 元素?

javascript - 在 javascript 中进行测验,在 jquery 中隐藏一个并显示另一个问题

jquery - 对于小屏幕宽度,如何使自定义选择菜单占据整个屏幕?

knockoutjs 中数组更改后 Jquery UI 选项卡初始化

javascript - 同一 HTML 文档中包含的两个不同 SVG 文件中的 ID 冲突

javascript - 提交表单时未执行脚本

带有 Coldfusion 远程数据源的 jQuery 自动完成