knockout.js - 如何构建具有字符计数器和最大长度的文本区域?

标签 knockout.js knockout-2.0

请考虑this jsfiddle 。它包含以下内容:

<textarea data-bind="value: comment, valueUpdate: 'afterkyedown'"></textarea>

<br/><br/>
<span data-bind="text: getCount, valueUpdate: ['afterkeydown','propertychange','input']"></span> characters???

还有这个 JavaScript:

var viewModel = function(){
    var self = this;

    self.count = ko.observable(0);
    self.comment = ko.observable("");
    self.getCount = function(){
        var countNum = 10 - self.comment().length;
        self.count(countNum);
    };
}

var viewModel12 = new viewModel();
ko.applyBindings(viewModel);

我有一个文本区域,最大长度应为 20 个字符。当字符数达到20时,它将停止,如果您尝试添加更多字符,它们将被删除。

请注意,这也适用于复制/粘贴:如果用户粘贴超过 20 个字符,则仅保留前 20 个字符,其余的应删除。

最佳答案

看看this jsfiddle ,其工作原理如下:

var viewModel = function(){
    var self = this;

    self.comment = ko.observable("");
    self.count = ko.computed(function(){
        var countNum = 10 - self.comment().length;
        return countNum
    });
}

var vm = new viewModel();
ko.applyBindings(vm);
<textarea data-bind="value: comment, valueUpdate: 'afterkeydown'"></textarea>
<br/><br/>
<span data-bind="text: count"></span> characters​​​​​​​

您需要了解ko.computed()做这种事情...

关于knockout.js - 如何构建具有字符计数器和最大长度的文本区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12982587/

相关文章:

knockout.js - knockoutJS,事件被触发,但是 event.which 仍然未定义

javascript - knockout JS : Fileupload event

javascript - 如何更新UI部分的knockout js observablearray的编辑项?

regex - 使用 ko.observable 进行多电子邮件验证

javascript - 带有数据绑定(bind)文本的 knockout 自定义组件

javascript - Knockoutjs 和设置 View 模型

css - 如何将 Hammer JS 轮播与 Knockout 绑定(bind)一起使用

knockout.js - KnockoutJS - 对 ko.computed 和 AJAX 请求的不满

javascript - 如何在单独的 'thread' 中或异步应用模板绑定(bind)?