Javascript 如何获取敲除焦点的当前输入值

Javascript 如何获取敲除焦点的当前输入值,javascript,knockout.js,Javascript,Knockout.js,我对knockout.js基本上是新手。我想得到焦点输出的输入值。focus out事件将触发一个函数,该函数将更改可观察数组变量上的某些项 代码如下: <input placeholder="Enter a caption" type="text" data-bind="event:{focusout: $parent.modifyPhotoCaption(id, $(this).val())}" /> 但是,$(this.val()不起作用,this.val也不起作用。我想

我对knockout.js基本上是新手。我想得到焦点输出的输入值。focus out事件将触发一个函数,该函数将更改可观察数组变量上的某些项

代码如下:

<input placeholder="Enter a caption" type="text" data-bind="event:{focusout: $parent.modifyPhotoCaption(id, $(this).val())}" />

但是,$(this.val()不起作用,this.val也不起作用。我想立即得到当前输入的值

谢谢你的帮助

更新:

我想我并没有给出太多的细节。我希望立即获取该值的原因是因为有很多输入文本:

<input placeholder="Enter a caption" type="text" data-bind="event:{focusout: $parent.modifyPhotoCaption(id, $(this).val())}" />
<input placeholder="Enter a caption" type="text" data-bind="event:{focusout: $parent.modifyPhotoCaption(id, $(this).val())}" />
<input placeholder="Enter a caption" type="text" data-bind="event:{focusout: $parent.modifyPhotoCaption(id, $(this).val())}" />


我不知道如何通过数组获取值。正如我对你的问题所评论的那样,这样做似乎是最快的:使用一个可观察的属性并订阅它。在subscribe中的ObservalArray中执行您需要执行的任何更改,除非绑定项是ObservalArray的一部分

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

    self.foo = ko.observable();

    self.foo.subscribe(function() {
       // do whatever needed.
       console.log(self.foo()); 
    });
};

ko.applyBindings(new VM());

我宁愿将您的输入绑定到一个可观察值,然后订阅可观察值。一个问题:如果您已经使用了敲除绑定,为什么不简单地将照片标题和输入字段绑定到viewmodel中的同一个对象/属性?手动触发标题更新对我来说似乎完全没有必要。显示完整的viewModel。@Comebal我必须同意Alexander的意见并要求提供完整的viewModel。如果您有很多输入,您可以将它们定义为observablearray并执行虚拟foreach绑定。