Knockout JS 只计算 maxLength 属性中的数字

Knockout JS Count only numbers in maxLength attribute

有没有办法操纵 maxLength 属性来只计算数字? 我看到这段代码 MyObservable.replace(/[^0-9]/g, '').length 只能计算数字,但我不知道放在哪里。或者任何更好的想法。谢谢

如果您想要限制为特定数量而不是字符串的长度,则需要使用自定义绑定。有 2 个选项,第一个是 input="text",第二个是 input="number"

与第一个不同的是,您需要在下面的代码中包含一个有点像您的示例的正则表达式,第二个选项浏览器已经解决了这个问题,我将保留它告诉你你想去哪里。

ko.bindingHandlers.maxValue = {
    init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
        var valueObservable = valueAccessor();

        ko.utils.registerEventHandler(element, "change", function () {
            var value = Number(element.value);
          if (value >= 0) {
            if (value > allBindings().maxAmount) {
                value = allBindings().maxAmount;
            }
            element.value = value;
            valueObservable(value);
          }
        });
    },
};

var ViewModel = function ()
{
    var self = this;
  self.value = ko.observable();
};

ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<input type="number" data-bind="maxValue: $root.value, maxAmount: 100" />