Javascript 对knockout.js中的模糊事件作出反应

Javascript 对knockout.js中的模糊事件作出反应,javascript,knockout.js,Javascript,Knockout.js,我有一个输入文本框,每当它失去焦点时,我想在函数中得到它的值文本 例如,如果键入“commentionals1”,如何在blur事件的事件处理程序中获取该文本 这就是我试过的。我将projectcommissional作为对象,而不是用户键入的文本 HMTL JS 改用绑定。据我所知,一旦用户停止编辑,您希望文本框中的数据。这很简单。从knockout js文档页面查看此示例 <p> Hello <b data-bind="text:name"></b>

我有一个输入文本框,每当它失去焦点时,我想在函数中得到它的值文本

例如,如果键入
“commentionals1”
,如何在
blur
事件的事件处理程序中获取该文本

这就是我试过的。我将
projectcommissional
作为对象,而不是用户键入的文本

HMTL


JS

改用绑定。据我所知,一旦用户停止编辑,您希望文本框中的数据。这很简单。从knockout js文档页面查看此示例

<p>
Hello  <b data-bind="text:name"></b> </p>   
<input data-bind="value: name, hasfocus: editing" />

<p><em>Click the name to edit it; click elsewhere to apply changes.</em></p>

您犯的第一个错误是在输入字段上使用“文本”绑定,而不是“值”绑定

关于事件处理程序,我不会这样做。我会使用knockout的“订阅”功能来监听对可观察对象的更改

下面是一个例子,我已经更改了您的标记,以便更清楚地演示

HTML


您可以使用附加到任何JS事件的事件:

<input name="id" data-bind="value: id, event: { blur: blurFunction }">

就这么简单。

为什么您认为输入的值会成为事件处理程序参数的一部分?我真的不知道!,您能更正它吗?另外,请解释为什么要在
blur
处理程序中使用文本。在我看来,你没有正确使用击倒。您需要显示您的视图模型(
projectestimential
以及其中的所有内容)。请看-这就是您需要的吗?模糊可以用于失去焦点:)上面的示例用于切换。
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"));
<div class="ratingcontents" data-bind="foreach: ProjectTestimonial">

  <input type="text" placeholder="Testimonials" class="txttestimonials"  
    data-bind="value: Testimonialstext" />

</div>
function viewModel(jsModel){
    var self = this;

    self.ProjectTestimonial = ko.utils.arrayMap(jsModel, function(item) {
        return new testimonial(item);
    }); 
}

function testimonial(jsTestimonial){
    var self = this;
    ko.mapping.fromJS(jsTestimonial, {}, self);

    self.Testimonialstext.subscribe(function(){
        alert(self.SourceId() + self.Testimonialstext());        
    });
}

var rawModel = [
    {
        SourceId: '1',
        SourceText: 'Foo',
        Testimonialstext: 'Ahoy there.'
    },
    {
        SourceId: '2',
        SourceText: 'Bar',
        Testimonialstext: 'Blah blah blah'
}];

ko.applyBindings(new viewModel(rawModel));
<input name="id" data-bind="value: id, event: { blur: blurFunction }">
self.blurFuncion = function(){
    // this attacks when blur event occurs in input
}