javascript - 在 knockout 上制作仅输入数字类型

标签 javascript knockout.js knockout-2.0

我读了很多教程,但我不知道该怎么做,这就是输入

input(type="text",name="price",id="price"data-bind="text: price,valueUpdate:['afterkeydown','propertychange','input']")

这是我的 View 模型

price: ko.computed(function()
{
    return parseFloat(this.replace(' ','').replace(/[^0-9\.]+/g,"")) || '';
},this)

但这会导致错误:这没有方法替换???我如何将价格值传递给计算函数?

最佳答案

最好创建自定义绑定(bind) http://knockoutjs.com/documentation/custom-bindings.html只接受允许的字符 [0-9,.] 作为数字表示。

将此行放入您的 View 中

<input id="text" type="text" data-bind="numeric, value: number">

将此行放入您的模型中(记住将数字绑定(bind)为可观察属性)

ko.bindingHandlers.numeric = {
    init: function (element, valueAccessor) {
        $(element).on("keydown", function (event) {
            // Allow: backspace, delete, tab, escape, and enter
            if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
                // Allow: Ctrl+A
                (event.keyCode == 65 && event.ctrlKey === true) ||
                // Allow: . ,
                (event.keyCode == 188 || event.keyCode == 190 || event.keyCode == 110) ||
                // Allow: home, end, left, right
                (event.keyCode >= 35 && event.keyCode <= 39)) {
                // let it happen, don't do anything
                return;
            }
            else {
                // Ensure that it is a number and stop the keypress
                if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
                    event.preventDefault();
                }
            }
        });
    }
};

关于javascript - 在 knockout 上制作仅输入数字类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17048468/

相关文章:

javascript - 使用 API 中的 v-if 显示信息

javascript - 我在这里修改我的 Redux 状态吗?

knockout.js - 我可以在模板绑定(bind)中传递变量吗?

knockout.js - 如何在 knockout 中检查包含

javascript - knockout js按钮点击全选复选框

javascript - Knockout 附加 observables w/characters

html - &lt;script&gt;&lt;!--//-->&lt;/script&gt; 是否具有现代用途?

javascript - TypeScript:如何创建一个具有基类所有方法而无需手动声明的包装类?

knockout.js - 使用从服务器接收的 JSON 数据更新 View 模型时刷新 Knockout 绑定(bind)

javascript - 如何使用 knockout 遍历一个对象(不是数组)