Knockout.js 在模糊和加载时在文本框中设置数字格式?使用击倒

Knockout.js 在模糊和加载时在文本框中设置数字格式?使用击倒,knockout.js,knockout-validation,knockout-kendo,Knockout.js,Knockout Validation,Knockout Kendo,我有一个类型为Number的文本框视图,我正在使用敲除验证插件成功验证是否输入了数字 但是这里出现了这样一种情况,我需要用逗号对输入的数字进行格式化,每四位数onBlur(百万格式) 我不知道如何继续执行此实现,但我只是有一些想法,但不知道如何将其变成图片(更好的想法将受到赞赏) 这是我的 要求:我将根据这个数字解释我的方案1234567890 onLoad我需要在文本框中将数字显示为1234567890 如果用户想要修改数字,则表示当他在文本框内单击时,数字应变为1234567890,以便他可

我有一个类型为Number的文本框视图,我正在使用敲除验证插件成功验证是否输入了数字

但是这里出现了这样一种情况,我需要用
逗号
对输入的数字进行格式化,每四位数
onBlur
(百万格式)

我不知道如何继续执行此实现,但我只是有一些想法,但不知道如何将其变成图片(更好的想法将受到赞赏)

这是我的

要求:我将根据这个数字解释我的方案
1234567890

  • onLoad我需要在文本框中将数字显示为
    1234567890

  • 如果用户想要修改数字,则表示当他在文本框内单击时,数字应变为
    1234567890
    ,以便他可以修改它(onblur排序)

  • 修改后,如果用户在文本框外单击,则表示数字应以逗号分隔以供查看

  • 最后我要验证它是否是数字#所以它应该接受带逗号的数字

  • 我是这样想的:

    1) 我使用computed格式化并返回它

    2) 对此没有任何线索,但考虑订阅

    3) 同样的订阅

    4) 自定义验证在数字中分隔逗号,并验证(即可能是正则表达式)

    在淘汰赛中是否有可能?我有我的疑问,但我希望一切都有办法

    有趣的是,我找到了我想要的功能,但我更喜欢在knockout中实现相同的功能,而不是使用其他插件,这会在某个时间点导致问题


    任何想法对我来说都是疯狂的。

    您可以创建两个输入:

    • 默认情况下,输入1为只读且可见,并包含格式化的值
    • 单击输入1时,将其隐藏,显示输入2,并将其聚焦于可编辑的实际值
    • 当输入2“模糊”时,隐藏它并用格式化值显示输入1
    Html:
    window.onload=function(){
    var vm={
    val:ko.observable(),
    瓦尔:柯({
    读:函数(){
    //数字格式
    返回(vm.val()| |“”)+“[格式化]”;
    },
    评价:正确
    }),
    编辑模式:可观察(假),
    toggleEdit:function(){
    vm.editMode(!vm.editMode());
    }
    };
    ko.应用绑定(vm);
    };
    
    
    
    hasFocus:editMode
    如果我在这里尝试Oops放置问题,我想我不会把焦点放出来:)我们必须将
    hasFocus
    放在最后一个位置,以获得其完美的功能。非常感谢你的帮助
    <div>
        <input type="text" readonly data-bind="value: valFormatted, 
                                               visible: !editMode(),
                                               click: toggleEdit" />
        <input type="text" data-bind="value: val, 
                                      visible: editMode, 
                                      hasFocus: editMode,
                                      event: { blur: toggleEdit}" />
    </div>
    
    window.onload = function() {
        var vm = {
            val: ko.observable(),
            valFormatted: ko.computed({
                read: function() {
                    // number format
                    return (vm.val() || '') + '[formatted]';
                },
                deferEvaluation: true
            }),
            editMode: ko.observable(false),
            toggleEdit: function() {
                vm.editMode(!vm.editMode());
            }
        };
    
        ko.applyBindings(vm);
    };