首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基因敲除掩蔽

基因敲除掩蔽
EN

Stack Overflow用户
提问于 2014-03-13 00:45:44
回答 3查看 746关注 0票数 0

我正在使用Knockout.js,并且我正在尝试对用户输入使用掩码。当用户输入数字时,我想使用掩码,并用逗号显示它。所以1000等于1000

为此,我有这个函数

代码语言:javascript
复制
function numberWithCommas(n) {
    var parts=n.toString().split(".");
    return parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",") + (parts[1] ? "." + parts[1] : "");
}

我不知道我应该如何使用它来正确地显示它。

HTML (部分)

代码语言:javascript
复制
<div class="col-sm-2">
    <input type="text" id="myAmountInput" class="form-control" data-bind="value: myAmount">
</div>

JS (部分)

代码语言:javascript
复制
define(['knockout', 'knockout-validation', 'services/changeup', 'moment', 'lodash', 'plugins/router'], function (ko, validation, changeup, moment, _, router) {
    function numberWithCommas(n) {
        var parts = n.toString().split(".");
        return parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",") + (parts[1] ? "." + parts[1] : "");
    }

    var timerId = setInterval(tick, 1000 * 10);

    var exports = {
        isRequestor: undefined,
        myAmount: ko.observable().extend({ required: true, number: true }),
        errors: ko.validation.group(this),
        activate: function (activationData) {
            var requestId = activationData;
            return changeup.getUserInfo().then(function (userInfo) {
                exports.userInfo = userInfo;
                return changeup.getRequest(requestId).then(function (request) {
                    exports.request = wrapRequest(request);
                    exports.isRequestor = request.username === userInfo.username;

                    if (exports.isRequestor) {
                        exports.myAmount(null);
                        exports.isResponder(true);
                    }
                    else {
                        var currentResponse = _.find(exports.request.responses(), function (r) { return r.username === userInfo.username; });
                        exports.isResponder(!!currentResponse);
                        exports.myAmount(currentResponse ? currentResponse.amount : null);
                    }
                    tick();
                });
            });
        }
    };
    return exports;
});
EN

回答 3

Stack Overflow用户

发布于 2014-03-13 00:55:30

我将创建一个计算的可观察对象并将其绑定到该对象

代码语言:javascript
复制
this.myAmountWithCommas = ko.computed(function() {
        return numberWithCommas(this.myAmount());
    }, this);

Computed Observable

示例jsFiddle

更新添加了使用绑定处理程序的简单示例(如果您更喜欢使用该jsFiddle

票数 1
EN

Stack Overflow用户

发布于 2014-03-13 01:05:15

我刚刚answered a question了一下关于使用jQuery插件进行屏蔽的事情。答案涉及如何使用自定义绑定处理程序来简化与knockout的集成。可能需要考虑一下。

票数 0
EN

Stack Overflow用户

发布于 2014-03-13 01:07:45

出于同样的目的,我正在使用jquery.maskedinput插件。它允许用户更容易地输入固定宽度的输入,您希望他们输入特定格式的数据(日期、电话号码等)。

和自定义绑定处理程序

代码语言:javascript
复制
ko.bindingHandlers.mask = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var options = ko.utils.unwrapObservable(valueAccessor()) || "";
        $(element).mask(options);
    }
};

然后您可以在任何DOM元素上使用它

代码语言:javascript
复制
<input data-bind="value: Number, mask: '9,9999'"/>

上的整个示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22358302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档