使用 Knockout.js 选择()输入字段

标签 select input knockout.js focus viewmodel

我是 Knockout.js 的新手。

访问 select()最佳方式是什么?一个<input />当它变得可见时?

查看:

<p>
    Name: 
    <b data-bind="visible: !editing(), text: name, click: edit">&nbsp;</b>
    <input data-bind="visible: editing, value: name, hasfocus: editing" />
</p>

View 模型:

function PersonViewModel(name) {
    // Data
    this.name = ko.observable(name);
    this.editing = ko.observable(false);

    // Behaviors
    this.edit = function() { this.editing(true) }
}

ko.applyBindings(new PersonViewModel("Bert Bertington"));

http://knockoutjs.com/documentation/hasfocus-binding.html

http://jsfiddle.net/RnCUd/

谢谢!

最佳答案

您可以创建一个新的绑定(bind)来处理选择。

ko.bindingHandlers.selected = {
    update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        var selected = ko.utils.unwrapObservable(valueAccessor());
        if (selected) element.select();
    }
};

将此绑定(bind)添加到您的输入字段。

<input data-bind="visible: editing, value: name, hasfocus: editing, selected: editing" />

这是一个 fiddle :http://jsfiddle.net/RnCUd/2/

<小时/>

或者,您可以创建一个包装 hasfocus 绑定(bind)的自定义绑定(bind):

ko.bindingHandlers.hasSelectedFocus = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        ko.bindingHandlers['hasfocus'].init(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
    },        
    update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        ko.bindingHandlers['hasfocus'].update(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);        

        var selected = ko.utils.unwrapObservable(valueAccessor());
        if (selected) element.select();
    }
};

此绑定(bind)只是将初始化和更新委托(delegate)给 hasfocus,并在可观察值为 true 时负责选择元素。使用它代替 hasfocus

<input data-bind="visible: editing, value: name, hasSelectedFocus: editing" />

这是一个 fiddle :http://jsfiddle.net/RnCUd/1/

关于使用 Knockout.js 选择()输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12294847/

相关文章:

mysql - 插入到从删除中选择

mysql - 如何按时间顺序从两个或多个表中进行选择?

html - 输入只读退格问题

jquery - 密码字段标签

javascript - knockout 自定义绑定(bind)更新未触发

select - Ionic 2 ionic 选择不显示所选选项

javascript - 为什么我的 javascript 无法看到选择了哪个 html 选项

Java Servlet - 从 html 文件输入中获取 byte[] 内容

javascript - jQuery datepicker - knockout 绑定(bind)设置初始日期

javascript - Kendo-knockoutjs 集成